我想向管理界面公开一些(特定于应用程序的)设置,以便用户可以轻松地更改它们,也不必重新启动Django。
我应该怎么做?
我在http://djangopackages.com/grids/g/live-setting/上签出了应用程序(btw django-constance最吸引人),但实际上所有这些应用程序所做的就是将值存储在数据库中,从而提供了一个网站。界面来更改它们,并进行缓存。Django内置的前两个功能不是吗?
我看到的最大缺点是,这些应用程序都不能直接替换这些设置的旧位置(settings.py),需要我迁移到它们的表示法,并且经常添加其他上下文处理器以在模板中访问它们。
我不能只是这样做吗?
包装settings.py,以便对我的设置进行数据库查询-http: //www.loose-bits.com/2011/04/extending-django-settings-with-derived.html 从我目前的幼稚角度来看,我看到的唯一缺点是:
添加或更改可用设置需要进行模式迁移(南)。- 我可以忍受这一点。
AFAIK,Django设置应该是不可变的。造成这种情况的原因有多种,最明显的原因是Django不了解服务器的执行模型(prefork /多线程)。
另外,你无法从Django模型本身加载设置,因为需要先加载设置,然后才能在ORM中使用任何内容。
因此,基本上,你有两种解决方案:
from django.conf import settings
第二种方法可能是你链接到的第三方应用程序实现的方法。