首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在django上自动创建超级用户?

如何在django上自动创建超级用户?
EN

Stack Overflow用户
提问于 2011-06-06 00:55:18
回答 15查看 85.4K关注 0票数 178

我想在django上自动运行manage.py createsuperuser,但它看起来没有办法设置默认密码。

我怎么才能得到这个呢?它必须独立于django数据库。

EN

回答 15

Stack Overflow用户

发布于 2019-12-24 18:41:11

从Django3.0开始,您可以使用默认的createsuperuser --noinput命令,并将所有必需字段(包括密码)设置为环境变量DJANGO_SUPERUSER_PASSWORDDJANGO_SUPERUSER_USERNAMEDJANGO_SUPERUSER_EMAIL--noinput标志是必需的。

这来自原始文档:https://docs.djangoproject.com/en/3.0/ref/django-admin/#django-admin-createsuperuser

这是将createsuperuser添加到脚本和管道中的最方便的方法。

票数 125
EN

Stack Overflow用户

发布于 2017-02-28 00:59:53

我自己也在寻找答案。我决定创建一个Django命令来扩展基本的createsuperuser命令(GitHub):

代码语言:javascript
运行
复制
from django.contrib.auth.management.commands import createsuperuser
from django.core.management import CommandError


class Command(createsuperuser.Command):
    help = 'Crate a superuser, and allow password to be provided'

    def add_arguments(self, parser):
        super(Command, self).add_arguments(parser)
        parser.add_argument(
            '--password', dest='password', default=None,
            help='Specifies the password for the superuser.',
        )

    def handle(self, *args, **options):
        password = options.get('password')
        username = options.get('username')
        database = options.get('database')

        if password and not username:
            raise CommandError("--username is required if specifying --password")

        super(Command, self).handle(*args, **options)

        if password:
            user = self.UserModel._default_manager.db_manager(database).get(username=username)
            user.set_password(password)
            user.save()

示例用法:

代码语言:javascript
运行
复制
./manage.py createsuperuser2 --username test1 --password 123321 --noinput --email 'blank@email.com'

这样做的优点是仍然支持默认命令的使用,同时还允许以非交互式的方式指定密码。

票数 63
EN

Stack Overflow用户

发布于 2011-06-06 01:13:17

您可以编写一个简单的python脚本来处理超级用户创建的自动化。User模型只是一个普通的Django模型,所以您可以按照正常的流程编写一个独立的Django脚本。例如:

代码语言:javascript
运行
复制
import django
django.setup()

from django.contrib.auth.models import User

u = User(username='unique_fellow')
u.set_password('a_very_cryptic_password')
u.is_superuser = True
u.is_staff = True
u.save()

您还可以向createsuperuser传递一些选项,即--noinput--username,这将允许您自动创建新的超级用户,但在您为他们设置密码之前,他们将无法登录。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6244382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档