将django设置设置并保存为json格式的文件。
django-json-settings2的Python项目详细描述
django-json-settings2
<表> < COL/> < COL/> <正文> 信息:在json文件中存储django设置的简单应用程序。 版本:0.1.0 作者:Netlandish团队(https://www.netlandish.com" rel="nofollow">https://www.netlandish.com) <表>python/django支持
- Django版本1.11+的Python 3.6+
说真的,这个应用程序很简单,很可能会与以前的 python和django的版本,但我们不能保证。
我知道,对吧?需要另一种方法将设置存储在 标准django 设置.py 设置。
现有的方法都不适合我们典型的django部署 以令人满意的方式设置。这种方法允许我们存储 外部设置,并以适合我们需要的方式。也许它会 也适合您的。
此外,已经有了一个django json设置应用程序 很可能非常适合您的项目,但不适合我们的项目。
我们多年前创建了这个应用程序,只是根据需要慢慢调整。它的 非常简单但灵活,几乎可以在任何工作流中工作。
这个应用程序实际上只不过是包装在上面的帮助函数 标准的 json 模块操作。
其他
有几个其他选项可以将设置存储在 django settings.py 文件。以下是一些:
还有几十个。选择最适合您需要的。
用法
保存设置
您需要将所需的设置保存到json文件中 第一。有一个简单的助手函数和管理命令, 提供帮助。
例如,假设您想为您的 密钥创建一个简单的设置 变量:
$ python >>> settings_to_save = ['SECRET_KEY'] >>> from json_settings2 import write_settings_from_django >>> write_settings_from_django(*settings_to_save) >>> exit() $ cat .settings.json { "SECRET_KEY": "SUPER SECRET KEY IS HERE! COOOOOOOLLLLL!" } $
write_settings_from_django 函数接受几个可选变量:
- settings_vars=positional args指定要保存的每个django设置
- filename=json设置文件的文件名。默认为 .settings.json
- directory=保存文件名的目录。默认为
- indent=json输出的缩进级别。设置为 无 表示最多
- 压缩文件。默认为 4
- force=如果存在目录 / 文件名 ,则覆盖它。
- 默认为 假
您也可以使用management命令。这需要你 JSON设置2 在您的 已安装的应用程序中设置:
$ python manage.py write_json_settings SECRET_KEY
您也可以添加任意多个设置:
$ python manage.py write_json_settings SECRET_KEY DATABASES STATIC_URL
要查看选项,只需:
$ python manage.py help write_json_settings
加载设置
最简单的方法是将所有默认设置和本地设置存储在 settings.py 并在最后加载json设置。很漂亮 直走。让我们看一个例子:
$ cat settings.py import os from json_settings2 import load_settings DEBUG = True STATIC_URL = '/static/' ... LOTS OF OTHERS SETTINGS HERE ... SETTINGS_DIR = os.path.dirname(os.path.abspath(__file__)) load_settings(globals(), directory=SETTINGS_DIR, depth=3)
实际上,这将告诉函数查找设置文件 从 settings.py 所在的目录开始,如果找不到, 查找To目录树中的3个级别。所以我们说 路径,如果您的文件是 /home/user/app/current/code/settings.py
加载设置功能将搜索以下路径 .settings.json :
- /home/user/app/current/code/
- /home/user/app/current/
- /home/user/app/
- /home/user/
如果要将设置存储在代码部署之外,则很有用 目录,通常是这样的。
加载设置 函数接受以下变量:
- 当前设置-将用找到的设置更新的字典。
- file name—具有设置的JSON文件的名称。默认为 .settings.json
- directory—文件名 所在目录的路径。默认为
- depth—要扫描的父目录数。默认为 0
- store=将设置存储到 当前设置中。默认为 真
如果 存储 设置为 假 则 当前设置 DICT将不会 更改。
函数将始终返回所找到内容的pythonic表示。 在json设置文件中。
注意目录 -默认情况下,上面的 目录 变量是 设置为 -表示当前目录。这通常意味着目录 启动python解释器或从中运行 manage.py 的地方。 这通常不是你想要的。最好的做法是 预期的目录可避免疑难解答问题。
什么是设置?
调用加载设置时,可以在json中包含额外的数据 对代码中的其他用户有用但不是 一些你想弄乱你的django.conf.settings对象的东西。
只存储所有大写字母的钥匙 如果您的json设置有选项 不是所有的大写字母,它们将作为加载的一部分返回 json数据。
换句话说,假设您在以下数据上加载设置:
{ "SeCreT_Key": "This will not be saved in Django settings.", "SECRET_KEY": "This WILL be saved in Django settings.", "secret_key": :This will not be saved in Django settings." }
您的密钥设置将设置为 这将保存在django设置中。
在哪里加载设置?
通常您可以将它放在 settings.py 文件的底部。 但是,有时您需要这些设置来指导 其他设置的值。
没有什么可以阻止您从 过程中的任何地方。这取决于你。只要记住如果你 加载设置,然后在加载后设置重复的变量 json设置,重复变量将拥有最终决定权。
例如:
$ cat .setting.json { "STATIC_URL": "/my/cool/static/url/" } $ cat settings.py import os from json_settings2 import load_settings SETTINGS_DIR = os.path.dirname(os.path.abspath(__file__)) load_settings(globals(), directory=SETTINGS_DIR, depth=3) DEBUG = True STATIC_URL = '/static/' ... LOTS OF OTHERS SETTINGS HERE ...
当 您可能希望它是 /my/cool/static/url/ 。只需抬头一看。
版权和保修
所有文档、库和示例代码 版权所有2019 Netlandish Inc.<; 您好 @ Netlandish com >;。图书馆和 示例代码根据BSD许可证的条款提供给您 包含在包含的文件bsd-license中。