Django request to find previous referrer
Question:
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="Back" /> //onlcick how to call the referrer
Answers:
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')
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="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')