将django设置设置并保存为json格式的文件。

django-json-settings2的Python项目详细描述


django-json-settings2 nlshield

<表> < 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=保存文件名的目录。默认为
  • < DL>
    indent=json输出的缩进级别。设置为 表示最多
    压缩文件。默认为 4
    < DL>
    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/

如果要将设置存储在代码部署之外,则很有用 目录,通常是这样的。

加载设置 函数接受以下变量:

    < DL>
    当前设置-将用找到的设置更新的字典。
    通常您会传入 globals()
  • 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中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX触控事件未触发Ubuntu 20.04触控笔记本电脑   java如何在AWT中关闭窗口?   java Dagger 2:注入具有构造函数参数的成员   创建对象的Java调用类   对象我想在A.java中添加两个数字,并在B.java中打印结果(如何?)   java如何使用AWS SDK for Android从数字海洋空间下载图像?   java Facebook sdk 4.0.1无法使用Android studio获取某些字段   4分钟后web应用程序(Angular 8和Rest API)中的java自动会话超时   在Eclipse for Java EE developers edition中禁用HTML警告   java按字母顺序排列字符串我错过了什么明显的东西吗?   java在Jshell中println和printf有什么不同