使用User.objects.get_or_create()在django中提供无效的密码格式?

bra*_*orm 5 django django-admin django-users

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)
Run Code Online (Sandbox Code Playgroud)

似乎它创造了User正确.但当我登录管理员时 http://127.0.0.1:8000/admin/auth/user/3/,我看到此消息的密码 Invalid password format or unknown hashing algorithm.

屏幕截图也附上了.为什么会这样,以及如何User objects从shell 创建.我实际上正在编写一个填充脚本,为我的项目创建多个用户?

在此输入图像描述

Soh*_*ain 17

您需要使用该User.set_password方法来设置原始密码.

例如,

from django.contrib.auth.models import User
user, created = User.objects.get_or_create(username="testuser2")
user.set_password('123')
user.save()
Run Code Online (Sandbox Code Playgroud)


Yas*_*ash 6

几乎正确,除了我们不想设置现有用户的密码

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
Run Code Online (Sandbox Code Playgroud)