【问题标题】:Django application global variables in database best praxis数据库最佳实践中的Django应用程序全局变量
【发布时间】:2022-01-17 20:49:25
【问题描述】:

我是 django 的新手。我将全局应用程序变量存储在设置环境文件夹中。但现在我需要在数据库中存储变量,因为我想从 django admin 更改它们。 我这样做的方法:在 django 核心中创建模型类,其中定义两个变量 app_name - 应用程序列表和数据 JSON。但我认为这不是最佳实践。由于 GIT 可能很难使用

【问题讨论】:

    标签: django django-models orm django-settings django-apps


    【解决方案1】:

    决定使用现成的解决方案:django-extra-setting
    在应用程序设置中定义将存储在数据库中的变量:

    DB_VARIABLES = {'variable_name': ['text', 'default_value']}
    

    django 项目加载后从文件中读取变量

    from settings import PROJECT_APPS from extra_settings.models import Setting from importlib import import_module class CoreConfig(AppConfig): def ready(self): if (is_manage_py and is_runserver) or (not is_manage_py): local_settings = import_module(f'path/{app_name}') for app_name in PROJECT_APPS: local_constants = local_settings.DB_VARIABLES if hasattr(local_settings, 'DB_VARIABLES') else False if local_constants: variables = {**variables, **{key: local_constants[key] for key in local_constants}} for constant_name in local_constants: if Setting.objects.filter(name=constant_name).count() == 0: constant_values = local_constants[constant_name] Setting(name=constant_name, value_type=constant_values[0], value=constant_values[1]).save()

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 1970-01-01
      • 2016-08-04
      • 2014-03-18
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      相关资源
      最近更新 更多