【问题标题】:Getting 'path' of previous URL from template从模板中获取上一个 URL 的“路径”
【发布时间】:2018-01-05 05:41:21
【问题描述】:

我知道我可以使用以下方法获取模板中的上一个 URL:

{{ request.META.HTTP_REFERER}}

但我想知道是否有办法只获取路径而不是绝对 URL (即 /my-page 而不是 http://localhost:8000/my-page

就像在视图中我们可以做的那样:

from urllib import parse
parse.urlparse(request.META.get('HTTP_REFERER')).path

我也可以在模板中做类似的事情吗?

更新(包含更多信息):我的用例是将以前的 url 与同一站点中的另一个 url 进行比较,以查看用户是否从那里进入

【问题讨论】:

    标签: python django-templates django-urls


    【解决方案1】:

    看起来在模板中没有直接的方法可以做到这一点,所以这就是我最终在模板中检查特定(相对)网址是否是前一个(绝对)网址的一部分:

    {% url 'schoollist:add_school' as add_school_url %}
    {% if add_school_url in request.META.HTTP_REFERER %} 
        Thanks for adding!
    {% endif %}
    

    【讨论】:

    • 我知道这已经是差不多两年后了,但这对我来说非常有用。谢谢。
    【解决方案2】:

    实现此目的的一种可能方法是使用urlparse 从引用 URL 中获取组件,然后获取相对路径。

    如果您使用自定义代码处理它,这可能不会对基本情况产生太大影响,但可能对更高级的边缘情况有好处:

    from urlparse import urlparse
    referer = request.META.get('HTTP_REFERER')
    path = urlparse(referer).path
    

    见:Parse URLs into components

    【讨论】:

    • 我正在视图中执行此操作,但想知道是否有直接的方法可以在模板中执行类似操作
    猜你喜欢
    • 2019-07-24
    • 2021-10-09
    • 2021-10-22
    • 1970-01-01
    • 2014-12-12
    • 2023-04-02
    • 1970-01-01
    • 2014-09-15
    • 2022-12-04
    相关资源
    最近更新 更多