开发者

Django request to find previous referrer

开发者 https://www.devze.com 2023-01-30 09:46 出处:网络
I\'m passing the request to the template page.In django template how to pass thelast page from which the new page was initialised.Instead of history.go(-1) i need to use this

I'm passing the request to the template page.In django template how to pass the last page from which the new page was initialised.Instead of history.go(-1) i need to use this

 {{request.http referer}} ??

 <input type="button" value=&quo开发者_运维百科t;Back" /> //onlcick how to call the referrer 


That piece of information is in the META attribute of the HttpRequest, and it's the HTTP_REFERER (sic) key, so I believe you should be able to access it in the template as:

{{ request.META.HTTP_REFERER }}

Works in the 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'


Rajeev, this is what I do:

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


This worked for me request.META.get('HTTP_REFERER') With this you won't get an error if doesn't exist, you will get None instead


With 2 lines of code below, I could get referer in overridden get_queryset() in Django Admin:

# "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)

Output on console:

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

精彩评论

暂无评论...
验证码 换一张
取 消