Django注册账号后识别为AnonymousUser无法自动登录问题求助
解决方案
问题核心:现有代码仅完成了用户信息写入数据库的操作,未向当前请求会话写入登录状态,因此Django无法识别当前用户身份,返回AnonymousUser。你需要在注册成功后手动调用Django的登录方法写入会话,即可实现注册后自动登录。
修改步骤
- 首先在views.py头部导入认证所需的两个方法
- 在用户注册校验通过、保存用户信息后,补充登录逻辑
修改后的完整代码如下:
from django.shortcuts import render, redirect from .forms import RegisterForm from django.contrib import messages # 新增导入认证和登录方法 from django.contrib.auth import authenticate, login def register(response): if response.method == "POST": form = RegisterForm(response.POST) if form.is_valid(): # 保存用户信息到数据库,同时拿到创建好的用户实例 user = form.save() # 从表单提交数据中获取用户名和密码 username = form.cleaned_data.get('username') password = form.cleaned_data.get('password1') # 验证用户身份 user = authenticate(username=username, password=password) # 为当前请求写入登录会话 login(response, user) return redirect("/") else: form = RegisterForm() return render(response, "register/register.html", {"form": form})
修改后重启服务即可生效,新用户注册完成后跳转首页就会被系统识别为已登录状态。
内容的提问来源于stack exchange,提问作者Anthony Humphreys
相关产品推荐
相关产品推荐

