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.