Django में लॉग आउट करने के बाद कहां से रीडायरेक्ट करना है?


90

बस यह सोचकर कि मैं लॉगआउट के बाद url को रीडायरेक्ट करने के लिए कहां सेट कर सकता हूं। मुझे पता है कि आप लॉगिन यूआरएल सेट कर सकते हैं। मैं अपने होम पेज पर रीडायरेक्ट करना चाहता हूं।

जवाबों:


156

आधुनिक Django (2017+?) की एक सेटिंग है LOGOUT_REDIRECT_URL

पुराने Djangos / मूल उत्तर

आपको कुछ भी लिखने या लपेटने की आवश्यकता नहीं है।

डॉक्स के अनुसार, आप केवल next_pageलॉगआउट दृश्य में तर्क की आपूर्ति कर सकते हैं। 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
यह काम नहीं करता है यदि आपने सभी सामान्य यूआरएल का सामान्य आयात किया है। नीचे @ YeRuizhi के उत्तर का उपयोग करने के लिए आसान
RunLoop

@RunLoop I इस अन्य विधि का अनुमोदन करता है। केवल समस्या यह है कि आपको हर बार आपके द्वारा लिंक किए गए लिंक का उपयोग करने के लिए याद रखना होगा। इसलिए अगर यह एक मानक निर्माण में काम करता है, तो यह अधिक विश्वसनीय है। यदि नहीं, तो अगला सबसे आसान समाधान समझ में आता है।
युजी 'टोमिता' टमिता

मैं यह देखने के लिए इस यूआरएल को कैसे उल्टा कर सकता हूं।
उल्का

यह एक भयानक समाधान है। मैं इसे लॉगिन पृष्ठ पर वापस धकेल रहा हूं। क्या इस पंक्ति के माध्यम से एक सिस्टम संदेश जोड़ने का कोई तरीका है? तो एक पॉपअप बनाने के लिए के रूप में? "आपने सफलतापूर्वक लॉग आउट कर लिया है"
arcee123

'अगला पृष्ठ' URL: '/ सफलतापूर्वक_logged_out /' की शुरुआत में फ़ॉरवर्ड स्लैश महत्वपूर्ण है, इसके बिना, Django "सफलतापूर्वक_logged_out" URL के साथ "लॉगआउट" URL को बदलने का प्रयास करता है, यह एक नया 'अवैध' URL बनाता है। यदि आप लॉगआउट करने के बाद अपने लॉगिन पृष्ठ के साथ उपयोगकर्ताओं को पेश करना चाहते हैं, तो जीवन को एक कठिन बना देता है।
रिक्का

62

एक आसान तरीका:

अपने लॉग-आउट अनुरोध url में 'अगला' पैरामीटर जोड़ें। उदाहरण के लिए:

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

फिर लॉगआउट व्यू आपके लिए ट्रिक करेगा।

आफ्टर-लॉगिन-रीडायरेक्ट के लिए, आप बस इसे सेटिंग्स में सेट कर सकते हैं:

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

35
अजीब बात है कि बस एक LOGOUT_REDIRECT_URL संपत्ति नहीं है।
रॉब

6
जल्द ही आ रहा है ... docs.djangoproject.com/en/dev/ref/settings/…
कार्ल

16
हमारे पास अब 2017 है और LOGOUT_REDIRECT_URL वास्तव में काम कर रहा है :)
m.antkowicz

अच्छा उत्तर। मेरे में यह चिपका रहा base.htmlऔर इसके बारे में भूल गया। : D (मैं डेबियन जेसी पर विंटेज Django का उपयोग कर रहा हूं: S इसलिए नई सेटिंग्स उपलब्ध नहीं हैं।)
अंडरस्कोर_ड


14

आप अपनी सेटिंग में फ़ाइल में LOGOUT_REDIRECT_URL का उपयोग करके उपयोगकर्ता को कहीं भी पुनर्निर्देशित कर सकते हैं

LOGOUT_REDIRECT_URL = 'url name to redirect'

9

वर्तमान पृष्ठ पर पुनर्निर्देशित करें

<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>

Django 1.9 में परीक्षण किया गया।

इसे भी देखें: क्या जिओगो के {% url%} टेम्पलेट टैग के माध्यम से क्वेरी मापदंडों को पारित करना संभव है?


1
धन्यवाद, इसने मुझे मामले में मदद की, जब LOGOUT_REDIRECT_URL ने नहीं किया (coz मेरे पास परीक्षण और उत्पादन वातावरण में अलग-अलग रास्ते हैं)।
Dmytro Gierman


4

आप अपने अगले पैरामीटर के लिए नामांकित यूआरएल का उपयोग भी कर सकते हैं:

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

3

से डॉक्स आप अपने खुद के लॉगआउट (जो सिर्फ सरल आवरण हो सकता है) 'अगले' पेज अधिभावी दृश्य लिख सकते हैं।


3

यदि आप क्लाइंट स्तर पर पुनर्निर्देशन URL सेट करना चाहते हैं, तो आप इसमें कर सकते हैं urls.py:

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

और फिर टेम्पलेट में:

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

जहाँ next, आप सही URL की ओर संकेत करते हैं।


1

यदि आपने अपने स्वयं के url को परिभाषित किया है (और सामान्य जेनरिक url को आयात नहीं किया है) और मानक django सामान्य विचारों का उपयोग कर रहे हैं, तो आप पथ में बस (template_name = 'example.html') जोड़ सकते हैं।

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


0

इसे आप प्रोजेक्ट सेटिंगहोम फ़ाइल में जोड़ें LOGOUT_REDIRECT_URL = '/'

आप अपना URL '' के बीच लिख सकते हैं, मैं लॉगआउट डिफ़ॉल्ट रीडायरेक्ट के लिए अपने सूचकांक पृष्ठ का उपयोग करता हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.