【问题标题】:Django create superuser from batch fileDjango从批处理文件创建超级用户
【发布时间】:2015-01-13 19:39:32
【问题描述】:

我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个超级用户。

到目前为止我的代码:

python manage.py syncdb --noinput
python manage.py createsuperuser --username admin --email admin@exmaple.com 
python manage.py runserver

现在这会提示我输入密码,然后确认密码。我可以使用来自同一个批处理文件、另一个批处理文件的命令输入此信息吗?还是这不可能?

【问题讨论】:

标签: django batch-file cmd command-prompt


【解决方案1】:

您似乎无法使用echo ''stuff | cmd 提供密码,我认为这样做的唯一方法是在 Python 中创建它:

python manage.py syncdb --noinput
echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'admin@example.com', 'pass')" | python manage.py shell
python manage.py runserver

【讨论】:

  • 我尝试了你的建议,但它仍然提示我输入密码,好像 echo 没有提供它一样。
  • 我的错,这可能是不可能的,因为它是一个密码。我已经用其他你可以尝试的东西更新了我的答案
  • 我想知道他们什么时候会改变这个烂摊子,有一天能正确地做到这一点会很好
  • 这对于在初始状态下测试 python 应用程序来说是最有用的 hack
【解决方案2】:

从 Django 3.0(根据 the docs)开始,您可以使用 createsuperuser --no-input 选项并使用 DJANGO_SUPERUSER_PASSWORD 环境变量设置密码,例如,

DJANGO_SUPERUSER_PASSWORD=my_password ./manage.py createsuperuser \
    --no-input \
    --username=my_user \
    --email=my_user@domain.com

或者,使用所有环境变量:

DJANGO_SUPERUSER_PASSWORD=my_password \
DJANGO_SUPERUSER_USERNAME=my_user \
DJANGO_SUPERUSER_EMAIL=my_user@domain.com \
./manage.py createsuperuser \
--no-input

【讨论】:

  • 应该是DJANGO_SUPERUSER_USERNAME
【解决方案3】:

如果您使用自定义用户(在本例中为 CustomUser)是一种好习惯

echo "from django.contrib.auth import get_user_model; CustomUser = get_user_model();  CustomUser.objects.create_superuser('me', 'nt@example.co.uk', 'mypwd')" | python manage.py shell

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多