Solicitud de Django para encontrar el referente anterior

2 minutos de lectura

Avatar de usuario de Rajeev
Rajeev

Estoy pasando la solicitud a la página de la plantilla. En la plantilla de django, cómo pasar la última página desde la que se inicializó la nueva página. En lugar de history.go (-1), necesito usar esto

 {{request.http referer}} ??

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

Avatar de usuario de Daniel DiPaolo
daniel dipaolo

Ese dato está en el META atributo de la HttpRequesty es el HTTP_REFERER (sic), por lo que creo que debería poder acceder a ella en la plantilla como:

{{ request.META.HTTP_REFERER }}

Funciona en la concha:

>>> from django.template import *
>>> t = Template("https://stackoverflow.com/questions/4406377/{{ 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'

  • También dices que funcionaría…

    – Rajeev

    10 de diciembre de 2010 a las 9:45

Rajeev, esto es lo que hago:

 <a href="https://stackoverflow.com/questions/4406377/{{ request.META.HTTP_REFERER }}">Referring Page</a>

  • amigo, quiero implementarlo en la página de selección de elementos (que es un modal de arranque). cuando el usuario quiere agregar un producto a su lista de deseos, quiero un enlace a la página de productos y un botón de retroceso a la página de la lista de deseos (que es un formulario en ese modo BS). Lo usé, pero me lleva de vuelta a la página que contiene el modal. ¿Puedo volver a la página con ese modal abierto y tener los mismos valores en los cuadros de entrada que contiene?

    – Shahriar.M

    24 de diciembre de 2020 a las 14:41

esto funcionó para mí request.META.get('HTTP_REFERER')
Con esto no obtendrá un error si no existe, obtendrá Ninguno en su lugar

Con 2 líneas de código a continuación, podría obtener referente en anulado get_queryset() en Administrador de Django:

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

Salida en consola:

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

¿Ha sido útil esta solución?