2017-03-28 72 views
2

HTML代碼如何在django註銷?

{% if request.user %} 
    <a href="{% url 'main:logout' %}"> 
     Выход 
    </a> 
{% else %} 
    <a href="{% url 'main:registration' %}"> 
     Регистрация 
    </a> 
{% endif%}  

settings.py

LOGIN_REDIRECT_URL = 'main/index' 

views.py

def logout(request): 
    logout(request) 

urls.py

from django.conf.urls import url 
from . import views 
from django.conf import settings 

urlpatterns = [ 
    url(r'^logout/$', views.logout, {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout') 
] 

有什麼不對?

enter image description here

+2

請不要在截圖中發佈代碼(或回溯)。它們不能被搜索或複製,並且可用性差。相反,將其作爲文本直接粘貼到您的問題中。如果選擇它並單擊'{}'按鈕或Ctrl + K,則代碼塊將縮進四個空格,這將導致它被呈現爲代碼。 – Chris

回答

3

您正在使用不帶參數next_page您的自定義註銷視圖。 您應該參數把它添加到您的視圖,並傳遞給Django的註銷調用,或者只是使用django.contrib.auth.logout

例如在urls.py:

from django.conf.urls import url 
from django.conf import settings 
from django.contrib.auth.views import logout 

urlpatterns = [ 
    url(r'^logout/$', logout, {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout') 
] 
+0

你可以在代碼中顯示嗎? –

+0

我喜歡你。但它顯示了我的管理頁面。或者我不瞭解註銷功能。我做我自己的網站,現在登錄,我想從系統註銷。 –

+0

你需要在你的設置中定義LOGOUT_REDIRECT_URL(在你的例子中你定義了LOGIN_REDIRECT_URL),或者在urls.py而不是settings.LOGOUT_REDIRECT_URL中放置「/ main/index」(或者你需要的任何url)。它的工作原理是 –

0

進口的Django註銷第一,只寫from django.contrib.auth import logout

+0

我寫在views.py中 –

0

對我來說,URL「退出」正在其他地方使用的視圖文件的頂部,儘管如果我的Django怨聲四起從urls.py中刪除了「註銷」url(我使用的是Django 1.11)。我不知道爲什麼/在哪裏/如何。我的hacky的工作解決方案是使用不同的URL,'註銷':

url(r'^signout/$', logout, {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout'),