Как я могу аутентифицировать пользователя 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
в файле скрипта, а определить переменную окружения в другом месте.