django-admin中的站点配置

Sky*_*Fox 8 python django django-admin

我的网站几乎没有全局配置.例如"smtp-server address","公司地址"等.

当然,我可以:

  1. 创建变量settings.py并在模板和应用程序中使用它;
  2. 创建一个模型(如Configuration)并在那里写下所有需要的字段.

如果我使用第一种方式,我无法在django-admin中更改此字段.

如果我使用秒方式它不是一个漂亮的解决方案,因为我将使用代码中的任何地方model_name.objects.get(id=1),我只需要一个实例.模型是为另一个任务创建的.

我怎么解决这个问题?

Hus*_*ala 7

这就是我做的.可能不是最理想的解决方案,但对我有用.

  1. 创建一个配置模型并按照您的要点执行所有常用的操作2.创建一个函数(比如说configuration.view),它将拉出并返回dict中的配置值.

  2. 现在在你的settings.py,导入你的函数并将返回的dict设置为一个settings.py变量: CONFIG = configuration.view.get_config()

  3. 创建一个模板上下文处理器,它将CONFIG在模板上下文中设置此dict.

    def init_site_settings(request):
        return settings.CONFIG
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将此上下文处理器添加到您的 TEMPLATE_CONTEXT_PROCESSORS

  5. 现在,您可以自由地在模板中使用配置参数 {{my_config_key}}

希望这可以帮助.