代码之家  ›  专栏  ›  技术社区  ›  Dave

如何在命令行上使用Djanog auth用户,而不必手动输入密码?

  •  0
  • Dave  · 技术社区  · 4 年前

    我正在使用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
    

    有没有一种无需人工干预就能自动创建用户的方法?

    0 回复  |  直到 4 年前
        1
  •  2
  •   willeM_ Van Onsem    4 年前

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

    因此,您可以通过以下方式设置密码:

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

    然而,我强烈建议不要设定 DJANGO_超级用户_密码 在脚本文件中,但在其他地方定义环境变量。