Django认证函数authenticate、login用法正确性及官方文档查询
Django注册登录相关问题解答
关于authenticate调用时创建用户的疑问
首先明确:authenticate 本身不会创建新用户,你误解了代码的执行顺序:
- 代码中先执行了
valid = super(CreateUserView, self).form_valid(form),这一步是CreateView的内置默认逻辑,会自动调用form.save()把UserCreationForm提交的合法数据写入数据库,此时新用户已经完成创建,对应的用户名和加密密码已经存储在系统用户表中。 - 后续才调用
authenticate传入刚创建完成的用户名和密码做身份校验,所以此时传入的用户名必然已经存在,不会出现传入不存在用户名的情况。
authenticate、login函数的用法有效性说明
你提到的这两个函数都属于django.contrib.auth模块提供的原生身份验证工具,上述代码的用法完全符合官方规范,在Django 3.x、4.x、5.x全系列主流版本中均可正常使用,不需要做额外调整。
补充说明:这两个函数的相关说明归类在Django官方文档的「用户身份验证」章节下,你之前检索时可能遗漏了该分类下的内容。
内容的提问来源于stack exchange,提问作者user3617992
相关产品推荐
相关产品推荐

