[英]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.