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

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