Где найти настройки по умолчанию для моего приложения в Django?
Проблема: django.core.exceptions.ImproperlyConfigured: Requested settings, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Пример решения из Django Docs:
# Put this before accessing settings
from django.conf import settings
if not settings.configured:
settings.configure(default_settings=myapp_defaults, DEBUG=True)
Хорошо, но где мне найти настройки приложения по умолчанию?
Моя структура файла такова:
Когда вы запускаете Django через python manage.py runserver, запускается код вашего основного проекта (charges) и загружается settings.py. Там вы должны настроить его глобально. Эти настройки по умолчанию можно изменить с помощью переменных env (если он сидит где-то еще, или вы хотите попробовать другой файл settings.py).
Для ваших приложений/модулей: создайте файл settings.py и определите в нем значение по умолчанию, затем загрузите в apps.py файл настроек, как вы это сделали. В любом случае, значение по умолчанию будет переопределено вашим основным файлом settings.py
https://docs.djangoproject.com/fr/4.0/topics/settings/#custom-default-settings
По снимку экрана похоже, что вы используете PyCharm.
Нажмите правой кнопкой мыши на "втором" charges из скриншота и выберите опцию "mark as sources root"
Тогда вы сможете сделать то, что упомянул @raphael в комментарии
Ваши настройки находятся в разделе Charges/charges/charges/settings.py
Ваш интерпретатор не видит его, потому что root находится в Charges. Хотя, он должен быть и на Charges/charges, чтобы иметь возможность импортировать настройки из него
Эта проблема возникает из-за того, что Django не указывает, какой файл настроек он должен использовать.Как я вижу, есть небольшие неясности в том, что делать, столкнувшись с этой ошибкой, список различных решений, которые вы можете принять.
существует 3 различных способа решения этой проблемы.
1- определить переменную окружения в операционной системе (ссылка).
2- если вы используете виртуальную среду; установите новую переменную среды в файле activate.bat
set "DJANGO_SETTINGS_MODULE=charges.settings"
3- (как вы сделали!) в каждом файле python; напишите команду, которая определяет эту переменную окружения.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'charges.settings')
но если использовать этот метод, то очень важно, где вы вводите эту команду (во втором и точно первом случае нам вообще все равно!). Поэтому вы должны позаботиться о том, чтобы не использовать django до этой команды.
