使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)