использование User.objects.get_or_create() дает неверный формат пароля в django?

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.

Скриншот тоже прилагается. почему так и как создать User objects из шелла. Я на самом деле пишу заполняющий скрипт, который создает несколько пользователей для моего проекта?

введите здесь описание изображения


person brain storm    schedule 07.04.2014    source источник


Ответы (3)


Вам необходимо использовать User.set_password метод установки необработанного пароля.

E.g.,

from django.contrib.auth.models import User
user, created = User.objects.get_or_create(username="testuser2")
user.set_password('123')
user.save()
person Sohan Jain    schedule 07.04.2014

Почти правильно, за исключением того, что мы не хотим устанавливать пароль существующих пользователей

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
person Yash    schedule 21.01.2017

Как указано в документации.

Самый прямой способ создать пользователей — использовать включенный create_user() вспомогательная функция.

from django.contrib.auth.models import User
user = User.objects.create_user(username="testuser2",password="123")
person Akash Adhikari    schedule 13.07.2018