AttributeError:模块“ django.http.request”没有属性“ session”

时间:2018-09-02 11:54:05

标签: django django-authentication

我要注销用户,但出现此错误: 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

1 个答案:

答案 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')