创建一个django超级用户但永远不要让它登录

时间:2017-09-25 12:15:36

标签: django django-admin

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中的数据。  从!

开始

问题:
该用户是否可以登录?

2 个答案:

答案 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_usercreate_superuser时,Django会致电set_unusable_password()

这将设置一个永远不会被接受的密码。请注意,这与空白密码''不同。