使用 User.objects.get_or_create() 在 django 中给出无效的密码格式?
Posted
技术标签:
【中文标题】使用 User.objects.get_or_create() 在 django 中给出无效的密码格式?【英文标题】:using User.objects.get_or_create() gives invalid password format in django? 【发布时间】:2014-05-20 09:17:10 【问题描述】:python manage.py shell
>>> from django.contrib.auth.models import User
>>> u=User.objects.get_or_create(username="testuser2",password="123")
>>> u
(<User: testuser2>, True)
似乎它正确地创建了User
。但是当我登录管理员时
http://127.0.0.1:8000/admin/auth/user/3/
,
我看到这条信息输入密码
Invalid password format or unknown hashing algorithm.
截图也附上了。为什么会这样以及如何从 shell 创建User objects
。我实际上正在编写一个为我的项目创建多个用户的填充脚本?
【问题讨论】:
【参考方案1】:您需要使用User.set_password
method to set a raw password。
例如,
from django.contrib.auth.models import User
user, created = User.objects.get_or_create(username="testuser2")
user.set_password('123')
user.save()
【讨论】:
【参考方案2】:除了我们不想设置现有用户的密码之外几乎是正确的
from django.contrib.auth.models import User
user, created = User.objects.get_or_create(username="testuser2")
if created:
# user was created
# set the password here
user.set_password('123')
user.save()
else:
# user was retrieved
【讨论】:
【参考方案3】:如documentation中所述。
创建用户最直接的方法是使用包含的create_user()帮助函数。
from django.contrib.auth.models import User
user = User.objects.create_user(username="testuser2",password="123")
【讨论】:
以上是关于使用 User.objects.get_or_create() 在 django 中给出无效的密码格式?的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)