【发布时间】:2016-01-01 23:10:09
【问题描述】:
我想用 Python 编写一个脚本来编辑我的 Django 应用程序 settings.py 文件。除了将文件作为文本文件读取之外,还有其他方法可以编辑设置文件中变量的值并保存吗?
【问题讨论】:
标签: python django django-settings
我想用 Python 编写一个脚本来编辑我的 Django 应用程序 settings.py 文件。除了将文件作为文本文件读取之外,还有其他方法可以编辑设置文件中变量的值并保存吗?
【问题讨论】:
标签: python django django-settings
在您的主要 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)
【讨论】:
除了将文件作为文本文件读取之外,还有其他方法可以编辑设置文件中的变量值并保存吗?
没有必要像这样解析和重写settings.py。只需添加这样的语句:
import json
overrides = json.loads(open('settings.json').read())
globals().update(overrides)
settings.json 然后包含您的设置,如下所示:
{
"MY_SETTING" : "FOO"
}
我在这里使用 .json 文件作为示例。只要overrides 是字典,您就可以使用任何返回字典的源(例如yml、您自己的格式,甚至是python 的类__dict__)。
因此,从django.conf 导入的settings 将包含新设置,就好像它直接在settings.py 中指定一样:
$ python manage.py shell
In [1]: print settings.MY_SETTING
FOO
【讨论】:
os.environ.get('YOUR_VARIABLE')。
你想要像django-appconf 这样的东西。
【讨论】: