parameter example python django request referrer

python - example - request post parameter django



Plantillas de Django: crea un enlace de "retroceso" (6)

Estoy trabajando con Django y me pregunto si existe una forma simple de crear un enlace "hacia atrás" a la página anterior usando el sistema de plantillas.

Me imagino que en el peor de los casos puedo obtener esta información del objeto de solicitud en la función de vista, y pasarla al método de representación de la plantilla, pero espero poder evitar todo este código repetitivo de alguna manera.

Revisé los documentos de plantilla de Django y no he visto nada que mencione esto explícitamente.


Bueno, puedes habilitar:

''django.core.context_processors.request'',

en su settings.TEMPLATE_CONTEXT_PROCESSORS . settings.TEMPLATE_CONTEXT_PROCESSORS bloquea y engancha la referencia pero eso es un poco nauseabundo y podría romperse por todas partes.

La mayoría de los lugares en los que desea esto (por ejemplo, la página de publicación de edición en SO) tiene un objeto real para enganchar (en ese ejemplo, la publicación) para que pueda determinar fácilmente cuál debería ser la página anterior adecuada.


Esta solución funcionó para mí:

<a href="{{request.META.HTTP_REFERER}}">Go back</a>

Pero eso es agregar previamente ''django.core.context_processors.request'', a TEMPLATE_CONTEXT_PROCESSORS en la configuración de su proyecto.


Para un botón ''atrás'' en formularios de cambio para administrador de Django, lo que termino haciendo es un filtro de plantilla personalizado para analizar y decodificar la variable ''preserve_filters'' en la plantilla. Coloqué lo siguiente en un archivo personalizado templates / admin / submit_line.html:

<a href="../{% if original}../{% endif %}?{{ preserved_filters | decode_filter }}"> {% trans "Back" %} </a>

Y luego creó un filtro de plantilla personalizado:

from urllib.parse import unquote from django import template def decode_filter(variable): if variable.startswith(''_changelist_filters=''): return unquote(variable[20:]) return variable register = template.Library() register.filter(''decode_filter'', decode_filter)


Siempre puedes usar la opción del lado del cliente que es muy simple:

<a href="javascript:history.go(1)">Back</a>


Usar la solución del lado del cliente sería la solución adecuada.

<a href="javascript:history.go(-1)" class="btn btn-default">Cancel</a>


En realidad, es go(-1) .

<input type=button value="Previous Page" onClick="javascript:history.go(-1);">