从外部源更改django的设置

时间:2015-10-05 10:17:09

标签: python django django-settings

我想在python中编写一个脚本来编辑我的django app settigs.py文件。除了将文件作为文本文件读取之外,还有其他方法可以编辑设置文件中的变量值并保存吗?

3 个答案:

答案 0 :(得分:3)

  

除了将文件作为文本文件读取之外,还有其他方法可以编辑设置文件中的变量值并保存吗?

无需解析&像这样重写settings.py。只需添加如下语句:

import json
overrides = json.loads(open('settings.json').read())
globals().update(overrides)

settings.json然后包含您的设置:

{
  "MY_SETTING" : "FOO"
}

我在这里使用.json文件作为示例。只要overrides是一个字典,您就可以使用任何返回字典的源(例如yml,您自己的格式,甚至是python的类__dict__)。

因此,从settings导入的django.conf将包含新设置,就好像它是直接在settings.py中指定的那样:

$ python manage.py shell
In [1]: print settings.MY_SETTING
FOO 

答案 1 :(得分:1)

在您的主要settings.py中,您可以执行以下操作:

from portal.base.settings import add_portal_settings
globals().update(add_portal_settings(locals()))

portal.base.settings的内容类似于:

def add_portal_settings(settings):
  settings['PORTAL_URL'] = "portal_account_login"
  return settings

这将起作用:

from django.conf import settings
print(settings.PORTAL_URL)

答案 2 :(得分:0)

你想要像django-appconf这样的东西。