Saltar al contenido

Cómo redirigir a la página anterior en Django después de la solicitud POST

Solución:

Puede agregar un next campo a su formulario, y configúrelo en request.path. Después de procesar su formulario, puede redirigir al valor de esta ruta.

template.html

<form method="POST">
    {% csrf_token %}
    {{ form }}
    <input type="hidden" name="next" value="{{ request.path }}">
    <button type="submit">Let's Go</button>
</form>

views.py

next = request.POST.get('next', "https://foroayuda.es/")
return HttpResponseRedirect(next)

Esto es aproximadamente lo que django.contrib.auth hace para el formulario de inicio de sesión si no recuerdo mal.

Si pasa por una página intermedia, puede pasar el valor ‘siguiente’ a través de la cadena de consulta:

some_page.html

<a href="https://foroayuda.es/{% url"your_form_view' %}?next={{ request.path|urlencode }}">Go to my form!</a>

template.html

<form method="POST">
    {% csrf_token %}
    {{ form }}
    <input type="hidden" name="next" value="{{ request.GET.next }}">
    <button type="submit">Let's Go</button>
</form>

Puedes usar el HTTP_REFERER valor:

return HttpResponseRedirect(request.META.get('HTTP_REFERER', "https://foroayuda.es/"))

Tenga en cuenta que esto no funcionará si el cliente inhabilitó el envío de información de referencia (por ejemplo, utilizando una ventana de navegador privada / de incógnito). En tal caso, redirigirá a /.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *