Jak skonfigurować miejsce przekierowania po wylogowaniu w Django?


88

Zastanawiam się tylko, gdzie mogę ustawić adres URL przekierowania po wylogowaniu. Wiem, że możesz ustawić adres URL logowania. Chcę przekierować do mojej strony głównej.

Odpowiedzi:


156

Nowoczesne Django (2017+?) Ma ustawienie o nazwie LOGOUT_REDIRECT_URL.

Starsze Djangos / Oryginalna odpowiedź

Nie musisz niczego nadpisywać ani zawijać.

Zgodnie z dokumentacją możesz po prostu podać next_pageargument do widoku wylogowania. https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout

(r'^logout/$', 'django.contrib.auth.views.logout',
                          {'next_page': '/successfully_logged_out/'})

5
To nie działa, jeśli wykonałeś ogólny import wszystkich adresów URL autoryzacji. Łatwiejsza w użyciu odpowiedź @ YeRuizhi poniżej
RunLoop,

@RunLoop Akceptuję tę inną metodę. Jedynym problemem jest to, że musisz pamiętać, aby używać go za każdym razem, gdy budujesz wspomniany link. Więc jeśli to działa w standardowej wersji, jest bardziej niezawodne. Jeśli nie, to następne najłatwiejsze rozwiązanie ma sens.
Yuji 'Tomita' Tomita

nie mogę zrozumieć, jak odwrócić ten adres URL z widoku.
meteor

To świetne rozwiązanie. Wsuwam go z powrotem do strony logowania. Czy istnieje sposób na dodanie komunikatu systemowego również przez tę linię? aby utworzyć wyskakujące okienko? „Wylogowałeś się pomyślnie”
arcee123

Ukośnik na początku adresu URL „następnej strony”: „/ pomyślnie_logowany_wyjście /” jest niezbędny, bez niego Django próbuje połączyć adres URL „wylogowania” z adresem URL „pomyślnie_logowany_wylogowanie”, co tworzy nowy „nielegalny” adres URL. Trochę utrudnia życie, jeśli chcesz przedstawić Użytkownikom swoją stronę logowania po wylogowaniu.
Rickka

60

Jeden łatwiejszy sposób:

Dodaj parametr „next” do adresu URL żądania wylogowania. Na przykład:

<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>

Wtedy widok wylogowania załatwi sprawę za Ciebie.

W przypadku przekierowania po zalogowaniu możesz po prostu ustawić go w settings.py:

LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'

35
Dziwne, że nie ma tylko właściwości LOGOUT_REDIRECT_URL.
Rob Grant,

6
Carl

16
Mamy już 2017 rok i LOGOUT_REDIRECT_URL faktycznie działa :)
m.antkowicz

Dobra odpowiedź. Wbijam to w siebie base.htmli zapominając o tym. : D (Używam klasycznego Django na Debianie Jessie: S, więc nowe ustawienia nie są dostępne.)
underscore_d


13

Możesz przekierować użytkownika w dowolne miejsce, używając LOGOUT_REDIRECT_URL w swoim pliku setting.py

LOGOUT_REDIRECT_URL = 'url name to redirect'



3

Z dokumentów możesz napisać własny widok wylogowania (który może być po prostu prostym opakowaniem), nadpisując następną stronę.


3

Możesz nawet użyć nazwanych adresów URL dla następnego parametru:

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>

3

Jeśli chcesz ustawić adres URL przekierowania na poziomie klienta, możesz to zrobić w urls.py:

(r'^management/logout/$', 'django.contrib.auth.views.logout'),

A potem w szablonie:

<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
    Log out
</a>

Gdzie next, wskazujesz na właściwy adres URL.


1

Jeśli zdefiniowałeś własne adresy URL (i nie zaimportowałeś ogólnych adresów auth) i używasz standardowych widoków uwierzytelniania django, możesz je po prostu dodać (template_name = 'example.html') w ścieżce.

path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")


0

dodaj to w swoim pliku setting.py projektu LOGOUT_REDIRECT_URL = '/'

możesz wpisać swój adres URL między '' Używam mojej strony indeksu do domyślnego przekierowania wylogowania

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.