Dan*_*air 47 django settings runtime
我想将一些(特定于应用程序的)设置暴露给管理界面,这样用户可以轻松地更改它们,也不必重新启动Django.
我该怎么办呢?
我查看了http://djangopackages.com/grids/g/live-setting/上的应用程序(btw django-constance是最吸引人的)但实际上所有这些应用程序正在做的是将值存储在数据库中,提供Web用于更改它们和缓存的界面.Django中已经内置了前两个功能吗?
我看到的最大缺点是没有任何应用程序是这些设置的旧位置(settings.py)的替代品,并且要求我迁移到他们的表示法,并且经常添加另一个上下文处理器以在模板中访问它们.
我不能这样做吗?
从我目前的天真观点来看,我看到的唯一缺点是:
这不是两个世界中最好的 - 运行时管理员(具有所有额外津贴),数据库后端,缓存,以及我的所有设置.USED_TO_BE_IN_SETTINGS_DOT_PY将需要任何更改.我错过了什么吗?
And*_*ron 19
AFAIK,Django设置应该是不可变的.这有多种原因,最明显的是Django不知道服务器的执行模型(prefork/multi-threaded).
此外,您无法从Django模型加载设置本身,因为需要先加载设置,然后才能在ORM中使用任何内容.
所以,基本上,你有两个解决方案:
第一个是令人难以置信的黑客,我不建议.第二种更直接,更清洁,但要求你改变你的习惯(from django.conf import settings).
第二种方法可能是您链接到的第三方应用程序实现的方法.
DATABASES是一个字典.所以你可以操纵字典:
import django.conf as conf
conf.settings.DATABASES['default']['NAME'] = 'novo_banco'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39206 次 |
| 最近记录: |