Antworten:
Modern Django (2017+?) Hat eine Einstellung namens LOGOUT_REDIRECT_URL
.
Sie müssen nichts überschreiben oder einwickeln.
Gemäß den Dokumenten können Sie das next_page
Argument einfach in die Abmeldeansicht eingeben.
https://docs.djangoproject.com/de/dev/topics/auth/default/#django.contrib.auth.views.logout
(r'^logout/$', 'django.contrib.auth.views.logout',
{'next_page': '/successfully_logged_out/'})
Ein einfacher Weg:
Fügen Sie Ihrer Abmeldeanforderungs-URL den Parameter 'next' hinzu. Beispielsweise:
<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>
Dann erledigt die Abmeldeansicht den Trick für Sie.
Für die Umleitung nach der Anmeldung können Sie sie einfach in settings.py festlegen:
LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'
base.html
und vergiss es. : D (Ich verwende Vintage Django auf Debian Jessie: S, so dass die neuen Einstellungen nicht verfügbar sind.)
Seit Django 1.10 können Sie a definieren LOGOUT_REDIRECT_URL
( siehe Dokumentation )
Sie können Benutzer überall hin umleiten, indem Sie LOGOUT_REDIRECT_URL in Ihrer Datei settings.py verwenden
LOGOUT_REDIRECT_URL = 'url name to redirect'
Zur aktuellen Seite umleiten
<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>
Getestet in Django 1.9.
Siehe auch: Ist es möglich, Abfrageparameter über das Django-Vorlagen-Tag {% url%} zu übergeben?
Geben Sie in Ihrer Abmeldeansicht HttpResponseRedirect (url) zurück, nachdem Sie den Benutzer endgültig abgemeldet haben. Bitte sehen Sie hier für weitere Details .
In den Dokumenten können Sie eine eigene Abmeldeansicht (die nur ein einfacher Wrapper sein kann) schreiben, die die nächste Seite überschreibt.
Wenn Sie die Umleitungs-URL auf Client-Ebene festlegen möchten, können Sie dies folgendermaßen tun urls.py
:
(r'^management/logout/$', 'django.contrib.auth.views.logout'),
Und dann in der Vorlage:
<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
Log out
</a>
Wo das next
, zeigen Sie auf die richtige URL.