Как получить данные из файла конфигурации (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, а затем сделать форму для обновления значения настройки во время выполнения путем редактирования значения базы данных.