我怎样才能在命令行上使用 Django 身份验证用户而不必手动输入密码?

How can I a Djanog auth user on the command line and not have to manually enter the password?

我正在使用 Django 3.2 和 auth 模块。我想在命令行上创建一个超级用户(最终包含在 docker 脚本中)。当我尝试这个时

$ python manage.py createsuperuser --username=joe --email=joe@example.com

系统提示我输入密码。该模块似乎不支持“--password”参数...

$ python manage.py createsuperuser --username=joe --email=joe@example.com --password=password
usage: manage.py createsuperuser [-h] [--username USERNAME] [--noinput] [--database DATABASE]
                                 [--email EMAIL] [--version] [-v {0,1,2,3}] [--settings SETTINGS]
                                 [--pythonpath PYTHONPATH] [--traceback] [--no-color] [--force-color]
                                 [--skip-checks]
manage.py createsuperuser: error: unrecognized arguments: --password=password

有没有一种方法可以在不手动干预的情况下自动创建用户?

这样做是出于安全原因:通常 shell 命令会写入历史文件,如果您将密码作为参数传递,黑客最终可能会查看历史并获得密码的超级用户。它可以读取DJANGO_SUPERUSER_PASSWORD变量的内容来设置密码。

因此您可以设置密码:

<strong>DJANGO_SUPERUSER_PASSWORD=somepassword</strong> python manage.py createsuperuser --no-input --username=joe  --email=joe@example.com

但是我强烈建议不要在脚本文件中设置 DJANGO_SUPERUSER_PASSWORD,而是在别处定义环境变量。