django - 我无法使用我使用的方法登录,我曾尝试使用身份验证方法,但它不起作用有人能指出我正确的方向吗
问题描述
def index(request):
#check if username and password POST requests exits (user submitted form)
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(request,username=username, password=password)
if user is not None:
auth.login(request, user)
return redirect('home')
else:
messages.info(request, "invalid credentials")
return redirect('index')
else:
return render(request, 'index.html')
这是我的代码我什至尝试只使用没有身份验证但结果相同的身份验证
解决方案
通常 Djangoauthenticate
会检查密码的散列版本是否与存储的密码匹配。因此,您不能以原始方式保存密码。
因此,AbstractBaseUser
该类提供了一个set_password(…)
方法 [Django-doc],它将密码设置为密码的散列形式。
因此,您可以将其实现为:
# …
else:
user.set_password(user.password)
user.save()
messages.info(request,"Registered Successfully")
此外,我强烈建议使用 a Form
(或 a ModelForm
)来验证输入数据。这实际上是 a 的主要任务Form
:验证和清理输入,并删除大量关于验证错误消息、清理和保存对象的样板代码。
推荐阅读
- microsoft-graph-api - 用户端点的差异
- interface - 如何在 NetLogo 中创建 2 个滑块值不能超过定义值的条件?
- kubernetes - 如何避免在没有足够存储空间的节点上创建 pod?
- hive - Hive的Describe结果查询
- firebase - Firestore 添加一个条件以只读最近的数据
- r - 我可以在没有“apply()”函数的情况下跨行应用 R 标准差吗?
- c++ - 引用模板参数的用途
- macos - 运行makefile MacOS sierra时出现zlib问题
- javascript - Firehose 无法承担角色
- powerbi - 根据过滤器值更改卡上的计数