Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在docker中以编程方式为django创建超级用户,而不使用manage.py createsuperuser命令?_Python_Django_Docker - Fatal编程技术网

Python 如何在docker中以编程方式为django创建超级用户,而不使用manage.py createsuperuser命令?

Python 如何在docker中以编程方式为django创建超级用户,而不使用manage.py createsuperuser命令?,python,django,docker,Python,Django,Docker,我是django的新手。我的django应用程序在docker中运行,我需要在不使用createsuperuser命令的情况下创建一个超级用户。我尝试使用此代码initadmin.py(如下所示),但无法使用“python manage.py initadmin”在bash文件中运行它。它不起作用了 initadmin.py: from django.contrib.auth.models import User from django.core.management.base import B

我是django的新手。我的django应用程序在docker中运行,我需要在不使用createsuperuser命令的情况下创建一个超级用户。我尝试使用此代码initadmin.py(如下所示),但无法使用“python manage.py initadmin”在bash文件中运行它。它不起作用了

initadmin.py:

from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from django.conf import settings


class Command(BaseCommand):

    def handle(self, *args, **options):
        if User.objects.count() == 0:
            for user in settings.ADMINS:
                username = 'admin'
                email = 'admin.com'
                password = 'admin'
                print('Creating account for %s (%s)' % (username, email))
                admin = User.objects.create_superuser(email=email, username=username, password=password)
                admin.is_active = True
                admin.is_admin = True
                admin.save()
        else:
            print('Admin accounts can only be initialized if no Accounts exist')

谁能告诉我我做错了什么?有没有更好的方法以编程方式创建超级用户?

这是
create\u superuser
的定义:

请注意,
用户名
电子邮件
密码
不是关键字参数,调用此方法时不能更改顺序。 你可以改变顺序实际上,我刚试过

    def create_superuser(self, username, email, password, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError('Superuser must have is_staff=True.')
        if extra_fields.get('is_superuser') is not True:
            raise ValueError('Superuser must have is_superuser=True.')

        return self._create_user(username, email, password, **extra_fields)
只需在代码中执行以下操作:

User.objects.create_superuser(username, email, password)
is_admin
不是默认用户模型的属性,您的意思是
is_staff

无论如何,您不需要将这些设置为
create\u superuser
将为您设置它们。 您也不需要调用
save

在您的案例中,文件结构应该是这样的

PROJECT_ROOT/
    YOUR_APP/
        __init__.py
        models.py
        management/
            commands/
                initadmin.py
        tests.py
        views.py

这是
create\u superuser
的定义:

请注意,
用户名
电子邮件
密码
不是关键字参数,调用此方法时不能更改顺序。 你可以改变顺序实际上,我刚试过

    def create_superuser(self, username, email, password, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError('Superuser must have is_staff=True.')
        if extra_fields.get('is_superuser') is not True:
            raise ValueError('Superuser must have is_superuser=True.')

        return self._create_user(username, email, password, **extra_fields)
只需在代码中执行以下操作:

User.objects.create_superuser(username, email, password)
is_admin
不是默认用户模型的属性,您的意思是
is_staff

无论如何,您不需要将这些设置为
create\u superuser
将为您设置它们。 您也不需要调用
save

在您的案例中,文件结构应该是这样的

PROJECT_ROOT/
    YOUR_APP/
        __init__.py
        models.py
        management/
            commands/
                initadmin.py
        tests.py
        views.py

能否添加尝试运行管理命令时收到的错误消息?能否添加尝试运行管理命令时收到的错误消息?谢谢!我将更改顺序,但您能否告诉我是否可以使用python manage.py initadmin运行它。。。。如果文件夹initadmin包含init.py和initadmin.py,并且该文件夹与manage.py处于同一级别!您需要遵循这里描述的结构:确保您在正确的位置拥有所有的空白的.y.iTyth.P.file。我添加了示例,您可以共享您的<代码>设置。ADMIDS和您当前的代码> IITAdmin。Py < /Cord>文件?谢谢!我将更改顺序,但您能否告诉我是否可以使用python manage.py initadmin运行它。。。。如果文件夹initadmin包含init.py和initadmin.py,并且该文件夹与manage.py处于同一级别!您需要遵循此处描述的结构:确保您在正确的位置拥有所有的空白y.iITy.y.py文件。我添加了示例,您可以共享您的<代码>设置。ADMIDS和您当前的代码> IITAdmin?Py < /Cord>文件?