Приветствую!
Просьба помочь с
settings.py.
У меня задача вынести все общие настройки в отдельную библиотеку, которая живет в отдельном репозитории. Я пишу много очень похожих проектов на django и у меня есть отдельное django application, которое живет в своем репозитории. Там есть общие модели, вьюхи и прочее.
Хочу в этот же общий модуль и поместить большую часть одинакового кода из
settings.pyСделал для этого функцию sharedapp.settings.shared_settings(env_file_path: str) — которая возвращает dict со всеми общими настройками + c настройками, которые читаются из .env файла проекта.
Сам файл
settings.py проекта у меня выглядит так:
import os
from django.conf
import settings
from sharedapp
import shared_settings
base_dir = os.path.
dirname(os.path.
dirname(os.path.
abspath(__file__)))
conf = {
"SETTING_1": 1,
"SETTING_2": 2,
# ...
}
settings.
configure(**
shared_settings(os.path.
join(base_dir,
".env")), **conf)
В переменной conf у меня находятся уникальные настройки под проект, а ф-ия shared_settings возврщает такие общие настройки как DEBUG, SECRET_KEY, INSTALLED_APPS и т.п.
Проект успешно запускается и работает, но вот для просто вызова ./manage.py начали появляться ошибки.
Note that only Django core commands are listed as settings are not properly configured (error: The SECRET_KEY setting must not be empty.).
Вот только SECRET_KEY точно задан, без него проект не запустился бы.
./manage.py diffsettings — работает хорошо и показывает все переменные, в том числи и тот же SECRET_KEY
Но вот некоторые админские команды из пакета django_extensions не работают, например ./manage.py print_settings валится с AttributeError.
И у меня вопрос: это какая-то бага пакета django_extensions, аль нельзя так работать с настройками как я это сделал? То, что у меня в файле project/
settings.py по факту нет ни одной глобальной переменной, а все задается только через settings.configure()