from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = 'Create default system user without login authorization'
def handle(self, *args, **options):
User.objects.create_superuser('codobot', 's@codium.co', None)
我使用None
密码来创建超级用户
但是当我查看数据库时,它仍然有字段password
中的数据。
从!
问题:
该用户是否可以登录?
答案 0 :(得分:2)
没有用户无法登录,
你可以简单地验证它:
from django.contrib.auth import authenticate
user = authenticate(username='codobot', password=None)
print ('Could not login') if user is None else ('User is logged in')
按文档
当raw_password为None时,密码将被设置为不可用的密码,就好像使用了set_unusable_password()一样。
详情here
答案 1 :(得分:2)
当您使用password=None
致电create_user
或create_superuser
时,Django会致电set_unusable_password()
。
这将设置一个永远不会被接受的密码。请注意,这与空白密码''
不同。