从模板中获取上一个 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 的“路径”的主要内容,如果未能解决你的问题,请参考以下文章

Django从模板加载静态url和路径

Django 模板--基于当前 URL 路径的条件

如何在 iPhone 中快速从文件路径 url 获取视频或图像?

在 iOS Swift 中从设备获取图像的 URL 路径

如何使用 URL 路径从 iOS 的照片库中获取图像?

如何获取/打印实体引用的路径或URL到我的twig模板(Drupal 8)?