python-3.x - 在 Django 管理站点中使 settings.py 中的变量可配置
问题描述
在我部署的 Django Web 后端应用程序中,一些变量(例如 react_app_url、log_level)在 settings.py 中指定。
我可以通过重新启动 Django 应用程序重新配置它们并使它们生效。但是重新启动过程会暂停整个服务,并可能影响与 Django API 交互的其他人。
可以在运行时通过 Django 管理站点配置这些变量吗?
更新:根据Django 文档,不建议更改 settings.py 中的变量
解决方案
假设您有一个名为core
包含模型的应用程序Config
,并且您想在管理页面中修改“配置”。所以你必须注意两件事:
- 加载配置到
settings
项目启动时。 - 更新
settings
配置时更新。
我的想法是使用apps.ready
和建模信号来做上面的所有事情。
在core/__init__.py
default_app_config = "core.apps.CoreConfig"
在core/apps.py
from django.apps import AppConfig
from django.conf import settings
class CoreConfig(AppConfig):
name = 'core'
def ready(self):
from . import signals
# set all your value from Config model to settings here
在core/signals.py
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver, Signal
from core.models import Config
@receiver(post_save, sender=Config)
def update_config_handler(sender, instance, created, **kwargs):
# Update your settings value here
# settings.VALUE = instance.value
pass
推荐阅读
- sql-server - 如何为不包含特定值的表中的每一行创建重复行?
- reactjs - React native + expo topbar 材质导航在顶部留下空白
- java - 缺少日志记录参数声纳规则
- sql - AWS Redshift 数据库中字符串列的筛选和分组策略
- regex - 在 Jmeter 中创建正则表达式时面临的问题
- java - 年份不是四位数时的日期解析异常
- numpy - 所有输入数组必须具有相同的尺寸 - python 使用追加
- php - 更新数据时忽略唯一验证
- r - 基于范围内 NA > 20% 的过滤变量 — R
- c# - 通过互联网从 PC 访问 Android 手机