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 
Asked By: Rajeev

||

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'
Answered By: Daniel DiPaolo

Rajeev, this is what I do:

 <a href="{{ request.META.HTTP_REFERER }}">Referring Page</a>
Answered By: Jeff Bauer

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')
Answered By: Kai – Kazuya Ito