Django请求查找先前的引荐来源

78

我正在将请求传递给模板页面。在Django模板中,如何传递初始化新页面的上一页。我需要使用这个而不是history.go(-1)。

 {{request.http referer}} ??

 <input type="button" value="Back" /> //onlcick how to call the referrer 
4个回答

156
那份信息在HttpRequestMETA属性中,它是HTTP_REFERER(注意拼写)键值,所以我认为你应该能够像下面这样在模板中访问它:
{{ request.META.HTTP_REFERER }}

在Shell中使用:

>>> from django.template import *
>>> t = Template("{{ request.META.HTTP_REFERER }}")
>>> from django.http import HttpRequest
>>> req = HttpRequest()
>>> req.META
{}
>>> req.META['HTTP_REFERER'] = 'google.com'
>>> c = Context({'request': req})
>>> t.render(c)
u'google.com'

您还在说 <input type="button" value="返回" onlick="window.location='{{ request.META.HTTP_REFERER }}'"/> 可以正常工作。 - Rajeev

26

Rajeev,这是我做的:

 <a href="{{ request.META.HTTP_REFERER }}">Referring Page</a>

朋友,我想在项目选择页面上实现它(这是一个Bootstrap模态框)。当用户想要将产品添加到愿望清单时,我希望有一个链接到产品页面和一个返回按钮到愿望清单页面(这是BS模态框中的表单)。我已经使用了它,但它把我带回到包含模态框的页面,我能否返回到打开该模态框的页面,并且具有其中输入框中相同的值? - Shahriar.M

11

这对我有用 request.META.get('HTTP_REFERER') 使用这种方式,如果该值不存在,就不会出错,而是返回 None


2
通过以下2行代码,我可以在重写的Django Admin中的get_queryset()中获取referer
# "store/admin.py"

from django.contrib import admin
from .models import Person

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
        
    def get_queryset(self, request):

        print(request.META.get('HTTP_REFERER')) # Here
        print(request.headers['Referer']) # Here
        
        return super().get_queryset(request)

在控制台上输出:

http://localhost:8000/admin/store/person/ # request.headers['Referer']
http://localhost:8000/admin/store/person/ # request.META.get('HTTP_REFERER')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接