【问题标题】:How to get data from config file (config.json) in real time in settings.py file in django如何在 django 的 settings.py 文件中实时从配置文件(config.json)中获取数据
【发布时间】:2022-01-10 03:15:01
【问题描述】:

我有一个用 Django 制作的项目。我仅出于登录目的添加了社交身份验证。我希望选定的电子邮件仅用于登录网站。我使用social-auth-app-django 库进行社交身份验证,并在settings.py 文件中添加了一个变量SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS,其中包含允许登录的所有电子邮件的列表。

我的项目目录如下所示:

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']

我已经制作了一个网页,该网页采用新的邮件 ID(需要添加到配置文件)并将该特定邮件 ID(或邮件 ID 列表)附加到 config.json 文件。但是现在问题出现了,新添加的邮件并没有直接反映到settings.py文件中定义的变量。为此,我需要重新启动代码以获取最新的配置文件。每次添加邮件id都需要重启代码。

我想在我的app 文件夹中创建一个数据库表,并通过从app 文件夹中导入model 来将该表加载到settings.py 中。但是在导入时,终端会引发错误,因为它说app is still not loaded,所以我不能在我的应用程序中使用模型。

有没有一种方法可以直接加载数据库表而无需从app 文件夹中导入models.py 文件?或者如果可以实时加载config.json 文件,这样我就不必重新启动代码

【问题讨论】:

    标签: django social-auth-app-django


    【解决方案1】:

    Django 中的settings.py 在执行时加载一次,我们不应该在运行时更改值。尽管文档建议这样做,但您可以通过多种方式在运行时更改设置值。您可以使用django-constance 库,然后通过编辑数据库值制作一个表单以在运行时更新设置的值。

    【讨论】:

    • 嘿,我探索了这个库,我能够在管理面板中添加 Constance,我可以在其中更改值,向其中添加电子邮件。但是如何在 settings.py 文件中获取该值呢?
    • 通过将密钥移动到CONSTANCE_CONFIG
    • 这是什么意思?哪个键?
    • "OAUTH2": { "WHITELISTED_EMAILS": [ "xyz@gmail.com", abc@gmail.com", "efg@gmail.com", "lmn@gmail.com" ] } 根据文档将其添加到配置中。
    • 不,这样不行。要让管理面板显示配置文件,您必须添加类似 CONSTANCE_CONFIG = { 'WHITELISTED_EMAILS': ('', 'Restricted emails'), } 的内容
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2013-05-24
    • 2011-10-28
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多