Django'da oturumu kapattıktan sonra nereye yönlendirileceğini nasıl yapılandırabilirim?


90

Oturumu kapattıktan sonra yönlendirmek için url'yi nereye ayarlayabileceğimi merak ediyorum. Giriş url'sini ayarlayabileceğinizi biliyorum. Ana sayfama yeniden yönlendirmek istiyorum.

Yanıtlar:


156

Modern Django (2017+?) Adlı bir ayar vardır LOGOUT_REDIRECT_URL.

Eski Django / Orijinal Cevap

Herhangi bir şeyin üzerine yazmanıza veya sarmanıza gerek yoktur.

Dokümanlara göre next_page, çıkış görünümüne argüman sağlayabilirsiniz . 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
Tüm yetkilendirme url'lerinin genel bir içe aktarımını yaptıysanız bu işe yaramaz. Kullanımı daha kolay @ YeRuizhi'nin aşağıdaki cevabı
RunLoop

@RunLoop Bu diğer yöntemi onaylıyorum. Tek sorun, söz konusu bağlantıyı her oluşturduğunuzda onu kullanmayı hatırlamanız gerektiğidir. Yani bu standart bir yapıda çalışıyorsa, daha güvenilirdir. Değilse, sonraki en kolay çözüm mantıklıdır.
Yuji 'Tomita' Tomita

Bu url'yi görünümden nasıl tersine çevireceğimi anlayamıyorum.
meteor

Bu harika bir çözüm. Giriş sayfasına geri itiyorum. Bu hat üzerinden de bir sistem mesajı eklemenin bir yolu var mı? bir pop-up oluşturmak için? "Başarıyla çıkış
yaptınız

'Sonraki sayfa' URL'sinin başındaki eğik çizgi: '/ success_log_out /' hayati önem taşır, bu olmadan Django, "çıkış" URL'sini "success_log_out" URL'si ile birleştirmeye çalışır, bu yeni bir 'geçersiz' URL oluşturur. Kullanıcılar oturumu kapattıktan sonra Oturum Açma Sayfanızı sunmak istiyorsanız hayatı biraz zorlaştırır.
Rickka

62

Daha kolay bir yol:

Çıkış isteği url'nize 'sonraki' parametresini ekleyin. Örneğin:

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

Daha sonra çıkış görünümü sizin için hile yapacak.

Giriş sonrası yeniden yönlendirme için, bunu settings.py içinde kolayca ayarlayabilirsiniz:

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

35
Sadece bir LOGOUT_REDIRECT_URL özelliğinin olmaması garip.
Rob Grant


16
Şimdi 2017 var ve LOGOUT_REDIRECT_URL aslında çalışıyor :)
m.antkowicz

İyi cevap. Bunu benim içime yapıştırıp base.htmlunutuyorum. : D (Debian Jessie: S üzerinde eski Django kullanıyorum, bu yüzden yeni ayarlar mevcut değil.)
undercore_d


14

Setting.py dosyanızda LOGOUT_REDIRECT_URL kullanarak kullanıcıyı istediğiniz yere yönlendirebilirsiniz.

LOGOUT_REDIRECT_URL = 'url name to redirect'



4

Hatta bir sonraki parametreniz için adlandırılmış URL'ler de kullanabilirsiniz:

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

3

Gönderen docs sen 'sonraki' sayfası geçersiz kılma (sadece basit sarıcı olabilir) kendi çıkış görünümünü yazabilir.


3

Yönlendirme URL'sini istemci düzeyinde ayarlamak istiyorsanız, bunu şu şekilde yapabilirsiniz urls.py:

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

Ve sonra şablonda:

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

Nerede, nextdoğru URL'yi gösteriyorsunuz.


1

Kendi url'lerinizi tanımladıysanız (ve genel kimlik doğrulama url'lerini içe aktarmadıysanız) ve standart django kimlik doğrulama görünümlerini kullanıyorsanız, bunları yola (template_name = 'example.html') ekleyebilirsiniz.

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


0

bunu proje setting.py dosyanıza ekleyin LOGOUT_REDIRECT_URL = '/'

URL'nizi '' Çıkış varsayılan yönlendirmesi için dizin sayfamı kullanıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.