我要注销用户,但出现此错误: AttributeError:模块'django.http.request'没有属性'session'
这是我的代码:
class logout_view(request):
logout(request)
print("-------------User Logging Out---------------")
redirect('essay:index')
网址:
url(r'^logout/$', views.logout_view.as_view(), name='user_logout')
中间件:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
不知道为什么会出现关于会话的错误。我正在使用Django 2.0
答案 0 :(得分:0)
您在这里混合了基于类和基于函数的视图。您试图编写一个类,并从URL中将其作为一个类进行引用,但实际上将其构造为一个函数,并在体内编写了代码。您应该使其具有功能:
def logout_view(request):
logout(request)
print("-------------User Logging Out---------------")
return redirect('essay:index')
注意,您需要返回响应。并且您应该从网址中将其作为函数进行引用:
url(r'^logout/$', views.logout_view, name='user_logout')
但是,这一切都没有意义,因为Django已经包含一个基于注销类的视图,您只需将其导入urls.py并直接在其中引用即可:
from django.contrib.auth.views import LogoutView
...
url(r'^logout/$', LogoutView.as_view(), name='user_logout')