Как получить данные из файла конфигурации (config.json) в реальном времени в файле settings.py в django
У меня есть проект, сделанный на Django. Я добавил социальный аутентификатор только для входа в систему. Я хочу, чтобы выбранные электронные письма использовались только для входа на сайт. Я использовал библиотеку social-auth-app-django для social auth и добавил переменную SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS в файл settings.py, где она содержит список всех электронных адресов, разрешенных для входа.
Моя директория проекта выглядит примерно так:
project_parent/
----project/
--------settings.py
--------wsgi.py
--------asgi.py
--------urls.py
----app/
--------models.py
--------views.py
--------urls.py
--------admin.py
----db.sqlite3
----manage.py
----config.json
Вот файл конфигурации:
{
"OAUTH2": {
"WHITELISTED_EMAILS": [
"xyz@gmail.com",
"abc@gmail.com",
"efg@gmail.com",
"lmn@gmail.com"
]
}
}
В файле settings.py я загрузил файл конфигурации следующим образом:
config = open('./config.json',)
data = json.load(config)
SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS = data['OAUTH2']['WHITELISTED_EMAILS']
Я сделал веб-страницу, которая принимает новый почтовый идентификатор (нужно добавить в файл конфигурации) и добавляет этот конкретный почтовый идентификатор (или список почтовых идентификаторов) в файл config.json. Но теперь возникает проблема, вновь добавленные письма не отражаются непосредственно в переменной, определенной в файле settings.py. Для этого мне нужно перезапустить код, чтобы получить последний файл конфигурации. Каждый раз, когда я добавляю почтовый идентификатор, мне нужно перезапускать код.
Я думал сделать таблицу базы данных в папке app и загрузить эту таблицу в settings.py путем импорта model из папки app. Но при импорте терминал выдает ошибку app is still not loaded, так что я не могу использовать модели внутри моего приложения.
Есть ли способ, с помощью которого я могу напрямую загрузить таблицу базы данных, не импортируя models.py файл из app папки? Или, если возможно, загрузить файл config.json в реальном времени, чтобы мне не пришлось перезапускать код
settings.py в Django загружается один раз во время выполнения, мы не должны изменять значения во время выполнения. Хотя это и рекомендуется в документации, есть способы, которыми вы можете изменить значения настроек во время выполнения. Вы можете использовать библиотеку django-constance, а затем сделать форму для обновления значения настройки во время выполнения путем редактирования значения базы данных.