以更有组织的方式处理django设置

django-sunset的Python项目详细描述


Django日落

django sunset在团队环境或 多服务器部署稍微容易一些。

基本思想是将设置模块分开,并基于 主机名 对于正在运行的计算机,请执行相应的操作。

安装

使用pip:

pip install django-sunset

或者,如果没有pip,则可以轻松安装

easy_install django-sunset

基本用法

当您在django中创建一个名为 settings 的python模块时(a 名为 settings.py 的文件保存项目的所有配置 将工作。

如果您是Django的新手,本教程可以帮助您开始学习。

从一个新项目开始( django admin.py start project mysite ):

mysite/
    __init__.py
    manage.py
    settings.py
    urls.py

settings.py 文件重命名为 settingsbase.py

mysite/
    __init__.py
    manage.py
    settingsbase.py
    urls.py

让我们看看您当前的主机名是什么

$ python -c 'import os; print os.uname()[1]'
rob-madoles-macbook-pro.local

我的是rob madoles macbook pro.local。在我将使用的所有示例中 在适当的情况下,用自己的替换。

现在使用以下内容创建 settings.py

from sunset import api

import settingsbase
api.collect(settingsbase)

api.roles(
    api.dev('rob-madoles-macbook-pro'))

from sunset.collection import *

我们应该有这个

mysite/
    __init__.py
    manage.py
    settings.py
    settingsbase.py
    urls.py

把django踢出这样的球

$ ./manage.py shell
Python 2.7 (r27:82500, Aug 16 2010, 15:13:20)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

再看一次,您应该会看到一个 设置slocal.py 。它是空的,只是一个评论 在顶部指示您将本地设置放在此处。

mysite/
    __init__.py
    manage.py
    settings.py
    settingsbase.py
    settingslocal.py
    urls.py

因为这些设置仅对您的计算机是本地的,所以您可能不希望 他们在仓库里。将其添加到 .gitignore .hgignore 或其他 等效的忽略文件。

继续做一些改变,我们改变数据库怎么样?

编辑设置slocal.py

pip install django-sunset
0

再次运行django shell并检查值

pip install django-sunset
1

太好了,你现在有本地设置,而且你不必触摸主机 设置.py 文件。

将本地设置基于模板

让我们拿上一个例子中的内容展开讨论。为了我们 我们的团队有很多设置,一个模板会更好开始 而不是空文件。

用以下内容编辑settings.py

pip install django-sunset
2

我们正在添加这个

pip install django-sunset
3

创建一个名为 settingsdev.py的空文件

pip install django-sunset
4

设置dev.py的内容设置为此

pip install django-sunset
5

这样做效果更好,每个开发人员都不必重复相同的键入操作。

删除您的 设置slocal.py 以便django sunset可以为您重新创建它。

pip install django-sunset
6

再次加载django shell

pip install django-sunset
7

如果您现在查看设置slocal.py,您将看到额外的好处。

部署或生产设置

对于开发人员来说,设置是一回事,它们经常更改,而且通常不是 在VCS中跟踪。

服务器是另一回事。你通常控制得很好 一旦开始运行,就很少更换。

因此,对于部署,语法有点不同。

创建名为 deployments 的目录和名为 web01.py

的文件
pip install django-sunset
8

用以下内容编辑settings.py

pip install django-sunset
9

注意, api.deployment 构造函数有两个参数。第一个是 部分主机名,第二个是将添加到 如果主机名匹配,则收集设置。

现在您可以编辑 web01.py 文件并更改您喜欢的任何设置。

另外,在本地模拟部署的服务器很容易。只需设置 主机名作为部署。

easy_install django-sunset
0

如果你已经部署到中央情报局oud和不知道主机名 您可以简单地设置ignore_missing标志。

easy_install django-sunset
1

将一个模块用于一组设置

使用django sunset,您可以按主机名分离设置,但是 在某些情况下,这并不总是最好的方法。

例如,假设一个开发人员负责设置Facebook 团队的API密钥。她上了facebook,花了半个小时 制作应用程序和编辑配置。

她可以创建一个密钥、应用程序ID和秘密,而不是通过电子邮件发送给每个人 所有模块都包含在内。

用以下内容编辑settings.py

easy_install django-sunset
2

我们在这里添加的是

easy_install django-sunset
3

现在,让我们使用以下内容创建 deployments/facebook.py

easy_install django-sunset
4

所以现在这个模块在内部执行主机名匹配,而不是依赖 关于角色。还要注意,hostname-like可以接受多个参数 如果任何主机名匹配,则将应用这些设置。

开发人员仍然有机会覆盖 Facebook的 模块在他们自己的 设置本地 中。API的顺序 在 设置中发生的调用将被保留。

问题和问题

请在github中输入问题,或者通过电子邮件发送给我,地址是:a href="https://github.com/robmadole/django-sunset/issues" rel="nofollow">github

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

推荐PyPI第三方库


热门话题
基于Java的遗传算法确定最优交易行为   java改型2.0无法解析Json嵌套对象   java在数组中查找最大额定值(数字),我们不能跳过数组中的一个或多个连续数字   java在spring boot中从命令行设置活动概要文件和配置位置   JavaAxis2:传输错误:404错误:未找到帮助理解其真正含义   java使用Play2WAR和Play2.2.1   java理解函数运算符:Lambda   在代理java后面读取https网页数据   java应用程序。Android单元测试中的类mock   java为什么onClick布局XML引用的方法需要是公共的?   从SMTLIB2文件解析的java显示声明   java重写给定的类以使用组合而不是继承   HTMLUnit和Java:NoSuchMethodException:createDefaultSSLContext()   java如何使用Spring和ThymeLeaf从前端正确更新后端中的对象?   来自init()Java的方法调用   使用cellrendering从数据库向JTable动态添加数据后,java无法使用JTable执行排序操作   java Android Studio 1.5.1。渲染错误(浮动操作按钮)   web服务如何使用UsenameToken和PasswordDigest为JAVA中的SOAP客户端附加wsse安全头   java为什么要在局部变量和myApplicationClass中同时删除“ArrayList.remove”?