从模板中获取上一个 URL 的“路径”
Posted
技术标签:
【中文标题】从模板中获取上一个 URL 的“路径”【英文标题】:Getting 'path' of previous URL from template 【发布时间】: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 进行比较,以查看用户是否从那里进入
【问题讨论】:
【参考方案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
【讨论】:
我正在视图中执行此操作,但想知道是否有直接的方法可以在模板中执行类似操作以上是关于从模板中获取上一个 URL 的“路径”的主要内容,如果未能解决你的问题,请参考以下文章