您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django的self.client.login(...)在单元测试中不起作用

Django的self.client.login(...)在单元测试中不起作用

无效的代码

from django.contrib.auth.models import User
from django.test import Client

user = User.objects.create(username='testuser', password='12345')

c = Client()
logged_in = c.login(username='testuser', password='12345')

为什么不起作用? 在上面的代码段中,User创建时,实际的密码哈希设置为12345。当客户端调用该login方法时,password参数的值12345将通过哈希函数传递,结果是

hash('12345') = 'adkfh5lkad438....'

然后将其与存储在数据库中的哈希进行比较,并且拒绝客户端访问,因为 'adkfh5lkad438....' != '12345'

正确的做法是调用set_password函数,该函数通过哈希函数传递给定的字符串并将结果存储在中User.password

另外,调用后,set_password我们必须将更新的User对象保存到数据库中:

user = User.objects.create(username='testuser')
user.set_password('12345')
user.save()

c = Client()
logged_in = c.login(username='testuser', password='12345')
Go 2022/1/1 18:23:08 有578人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶