Как обеспечить доступность всех пользовательских значений из settings.py в проекте Django? - PullRequest
0 голосов
/ 09 апреля 2020

Я определил несколько пользовательских значений в моем файле * settings.py * проекта Django. Мне нужно загрузить эти значения в мои представления и другие файлы проекта, но не все значения, определенные в settings.py, кажутся доступными.

settings.py

# My custom settings
API_URL = 'http://10.0.0.1'
EMAIL_DEFAULT_RECIPIENT = 'foo@bar.tld'

Я загружаю все содержимое файла settings.py, используя следующее, на мой взгляд:

views.py

my_view(request,foo_id):
    from django.conf import settings as project_settings

    # First log output
    logger.debug('API_URL: ' + project_settings.API_URL)
    # Second log output
    logger.debug('EMAIL_DEFAULT_RECIPIENT: ' + project_settings.EMAIL_DEFAULT_RECIPIENT)

Первый вывод журнала (значение API_URL) правильно:

[2020-00-00 00:00:00 +0000] [16381] [DEBUG] (my_app.views) API_URL : http://10.0.0.1

Странно, что второй выход журнала (значение EMAIL_DEFAULT_RECIPIENT) вызывает исключение:

AttributeError: 'Settings' object has no attribute 'EMAIL_DEFAULT_RECIPIENT'

Django макет проекта

my_project
├── my_app
│   ├── migrations
│   ├── __pycache__
│   └── templates
├── my_project
│   ├── __pycache__
│   ├── static
│   └── templates
├── __pycache__
└── venv
    ├── bin
    ├── include
    ├── lib
    └── lib64 -> lib

Мой Django проект обслуживается через NGINX / Gunicorn, запущенный системным сервисным подразделением в рамках venv. Стоит отметить, что я перезапустил этот сервис после изменения содержимого settings.py.

Я также очистил __pycache__ содержимое каталога проекта вручную, но это не влияет на упомянутую проблему.

Для записи Значение API_URL в settings.py давно определено как go, а EMAIL_DEFAULT_RECIPIENT совершенно новое.

Существует ли какой-либо кэш / байт-код, сгенерированный где-либо еще в Django проекте root, который может вызвать эту проблему?

Интересно, какой именно механизм стоит за from django.conf import settings ... Потому что почему-то кажется, что новые значения, добавленные в settings.py, не учитываются, даже если я перезапускаю свое приложение (см. Выше).

Как обеспечить возможность загрузки всех пользовательских значений из settings.py из views.py или других файлов проекта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...