Solución:
No necesita hacer una vista adicional para esto, la funcionalidad ya está incorporada.
Primero, cada página con un enlace de inicio de sesión necesita conocer la ruta actual, y la forma más fácil es agregar el preprosesor de contexto de solicitud a settings.py (los 4 primeros son predeterminados), luego el objeto de solicitud estará disponible en cada solicitud:
settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
Luego agregue en la plantilla que desea el enlace de inicio de sesión:
base.html:
<a href="https://foroayuda.es/{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a>
Esto agregará un argumento GET a la página de inicio de sesión que apunta a la página actual.
La plantilla de inicio de sesión puede ser tan simple como esto:
registro / login.html:
{% block content %}
<form method="post" action="">
{{form.as_p}}
<input type="submit" value="Login">
</form>
{% endblock %}
Puede que esta no sea una “práctica recomendada”, pero ya la he utilizado con éxito antes:
return HttpResponseRedirect(request.META.get('HTTP_REFERER',"https://foroayuda.es/"))
Para admitir URL completas con parámetros / valores, necesitaría:
?next={{ request.get_full_path|urlencode }}
en lugar de solo:
?next={{ request.path }}