Где найти настройки по умолчанию для моего приложения в 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)

Хорошо, но где мне найти настройки приложения по умолчанию?

Моя структура файла такова:

enter image description here

Когда вы запускаете 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 до этой команды.

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