Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 根据引用者更改模板中的链接文本_Django_Jinja2_Mezzanine - Fatal编程技术网

Django 根据引用者更改模板中的链接文本

Django 根据引用者更改模板中的链接文本,django,jinja2,mezzanine,Django,Jinja2,Mezzanine,我正在为我的博客制作导航栏。如果读者从帖子列表中看到帖子,我希望导航链接显示“返回帖子列表”之类的内容。如果访问者来自另一个来源,我希望链接上写着“阅读其他类似的帖子” 我知道我可以用request.META.HTTP\u REFERER测试REFERER,但我不知道该用什么来比较。我总是可以硬编码一个与后列表URL的比较,但我更喜欢更持久的。一个reverse()的组合,应该可以做到: if request.META['HTTP_REFERER'] == request.build_absol

我正在为我的博客制作导航栏。如果读者从帖子列表中看到帖子,我希望导航链接显示“返回帖子列表”之类的内容。如果访问者来自另一个来源,我希望链接上写着“阅读其他类似的帖子”


我知道我可以用
request.META.HTTP\u REFERER
测试REFERER,但我不知道该用什么来比较。我总是可以硬编码一个与后列表URL的比较,但我更喜欢更持久的。

一个
reverse()
的组合,应该可以做到:

if request.META['HTTP_REFERER'] == request.build_absolute_uri(reverse('posts')):
    ...
(假设只有一个URL映射到帖子列表。)


由于您使用的是Jinja2,因此也可以在模板中执行此操作。

无法在jinja模板中执行此操作。首先是字典,然后是函数。现在,我正在努力研究如何将它合并到python代码中。我想我可以把它作为一个页面处理器来写,但我需要它在所有的博客文章中出现,我不知道如何做到这一点。我试着为BlogPost编写一个页面处理器,但它不是页面的子类,所以无法工作。有什么想法吗?@raddevon:我不熟悉夹层,但是如果你使用基于类的视图,你可能可以在基类中自定义。另一种方法是创建一个简单的中间件,将所需的值插入到请求中。至于模板,Jinja2肯定支持访问字典成员和使用参数调用函数。它没有一个版本的
reverse
,但是如果您正在使用,比如说,您可以使用等效的
url()