繁体   English   中英

QueryDict 对象没有属性会话 Django

[英]QueryDict Object has no attribute session Django

所以我基本上有一个登录表单,我定义如下:

def login_request(request):
    if request.method == 'POST':
        data = request.POST
        auth_backend = AuthenticationBackend()
        login_form = LoginForm(data)
        if login_form.is_valid():
            user = auth_backend.authenticate(data, password=data['password'], email=data['email'])
            if user:
                login(data, user)
                # redirect to homepage
            else:
                login_form.add_error('password', "Password doesn't match email")
    else:
        data = {}
        login_form = LoginForm()
    return render(request, 'login.html', {'form': login_form, 'data': data})

如果给定的条件匹配,则用户必须登录。但是,当我这样做时

login(data, user)

我收到此错误:

Internal Server Error: /users/login/
Traceback (most recent call last):
  File "C:\Users\Iyappan\PycharmProjects\pyDjangoTest\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Iyappan\PycharmProjects\pyDjangoTest\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Iyappan\PycharmProjects\pyDjangoTest\users\views.py", line 34, in login_request
    login(data, user)
  File "C:\Users\Iyappan\PycharmProjects\pyDjangoTest\venv\lib\site-packages\django\contrib\auth\__init__.py", line 99, in login
    if SESSION_KEY in request.session:
AttributeError: 'QueryDict' object has no attribute 'session'

为什么会这样? 我怎样才能解决这个问题? 请帮助我,在此先感谢! 中间件:


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',
]

尝试改变这个:

if user:
    login(data, user)

做了:

if user:
    login(request, user)

暂无
暂无

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

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