Я застрял в узком месте, которое я пытался решить, используя официальные документы и другие ответы здесь, в stackoverflow, но до сих пор не смог программно создать суперпользователя django в среде beanstalk.
Текущее состояние - а. Приложение развертывается плавно, и я могу получить доступ к базе данных из своего приложения пользовательского интерфейса. в основном запись делается в какой-то другой таблице, которая у меня есть в приложении.
Как я пытался создать суперпользователя -
а. Передавая команды контейнера -
Опция 1-
container_commands:
01_migrate:
command: "django-admin.py migrate"
leader_only: true
02_collectstatic:
command: "django-admin.py collectstatic --noinput"
commands:
super_user:
command: "source /opt/python/run/venv/bin/activate && python <appname>/createuser.py"
leader_only: true
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "<Appname>.settings"
PYTHONPATH: "/opt/python/current/app:$PYTHONPATH"
В журналах - я не видел, чтобы он пытался запустить пользовательскую команду.
Вариант 2 -
container_commands:
01_migrate:
command: "django-admin.py migrate"
leader_only: true
02_collectstatic:
command: "django-admin.py collectstatic --noinput"
03_createsuperuser:
command: "source /opt/python/run/venv/bin/activate && django-admin.py createsuperuser"
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "<appname>.settings"
PYTHONPATH: "/opt/python/current/app:$PYTHONPATH"
Для этого я создал файл createsuperuser.py в папке /management/commands/, следуя структуре init.py в обеих папках, и один файл createsuperuser.py в командах —
from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
class Command(BaseCommand):
def handle(self, *args, **options):
if not User.objects.filter(username="admin").exists():
User.objects.create_superuser("admin", "[email protected]", "admin")
На это я получил следующее сообщение из логов -
Superuser creation skipped due to not running in a TTY. You can run `manage.py createsuperuser` in your project to create one manually.
Мои запросы -
почему я не могу создать суперпользователя из командной строки моей виртуальной среды? В том, что я получаю такое сообщение -
поднять ImproperlyConfigured("settings.DATABASES настроен неправильно." django.core.exceptions.ImproperlyConfigured: settings.DATABASES настроен неправильно. Укажите значение ENGINE. См. документацию по настройкам для получения более подробной информации.
Немного странно, учитывая, что команда makemigrations работает нормально.
И когда я повторяю $DJANGO_SETTINGS_MODULE, я получаю правильную настройку
appname.settings
Дайте мне знать, где я ошибаюсь при создании суперпользователя?