Rajeev
Rajeev

Reputation: 46949

Django request to find previous referrer

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 

Upvotes: 79

Views: 82662

Answers (4)

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')

Upvotes: 2

Oscar Garcia - OOSS
Oscar Garcia - OOSS

Reputation: 351

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

Upvotes: 12

Jeffrey Bauer
Jeffrey Bauer

Reputation: 14080

Rajeev, this is what I do:

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

Upvotes: 26

Daniel DiPaolo
Daniel DiPaolo

Reputation: 56408

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'

Upvotes: 158

Related Questions