Как я могу аутентифицировать пользователя Djanog в командной строке и не вводить пароль вручную?

Я использую 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, чтобы установить пароль.

Таким образом, вы можете установить пароль с помощью:

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

Однако я бы настоятельно рекомендовал не устанавливать DJANGO_SUPERUSER_PASSWORD в файле скрипта, а определить переменную окружения в другом месте.

Вернуться на верх