简体   繁体   English

如何在django中注销?

[英]How to logout in django?

html code HTML代码

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

settings.py settings.py

LOGIN_REDIRECT_URL = 'main/index'

views.py views.py

def logout(request):
    logout(request)

urls.py 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')
]

what's wrong? 怎么了?

在此输入图像描述

Django 2.0 it looks like it switched to a class based view Django 2.0它看起来像是切换到基于类的视图

from django.contrib.auth.views import LogoutView

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

You are using your custom logout view which doesn't take next_page parameter. 您正在使用不带next_page参数的自定义注销视图。 You should add it as parameter to your view and pass to django logout call, or just use django.contrib.auth.logout 您应该将它作为参数添加到视图中并传递给django logout调用,或者只使用django.contrib.auth.logout

eg in urls.py: 例如在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')
]

首先导入django logout,只需在视图文件顶部的from django.contrib.auth import logout中写入

For me, the url 'logout' was being used elsewhere, despite Django loudly complaining if I removed the 'logout' url from urls.py (I am using Django 1.11). 对我来说,网址'注销'正在其他地方使用,尽管Django大声抱怨我是否从urls.py删除了“注销”网址(我正在使用Django 1.11)。 I have no idea why/where/how. 我不知道为什么/在哪里/如何。 My hacky working solution was to use a different url, 'signout': 我的hacky工作解决方案是使用不同的网址,“注销”:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM