以更有组织的方式处理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-sunset0
再次运行django shell并检查值
pip install django-sunset1
太好了,你现在有本地设置,而且你不必触摸主机 设置.py 文件。
将本地设置基于模板
让我们拿上一个例子中的内容展开讨论。为了我们 我们的团队有很多设置,一个模板会更好开始 而不是空文件。
用以下内容编辑settings.py
pip install django-sunset2
我们正在添加这个
pip install django-sunset3
创建一个名为 settingsdev.py的空文件
pip install django-sunset4
将 设置dev.py的内容设置为此
pip install django-sunset5
这样做效果更好,每个开发人员都不必重复相同的键入操作。
删除您的 设置slocal.py 以便django sunset可以为您重新创建它。
pip install django-sunset6
再次加载django shell
pip install django-sunset7
如果您现在查看设置slocal.py,您将看到额外的好处。
部署或生产设置
对于开发人员来说,设置是一回事,它们经常更改,而且通常不是 在VCS中跟踪。
服务器是另一回事。你通常控制得很好 一旦开始运行,就很少更换。
因此,对于部署,语法有点不同。
创建名为 deployments 的目录和名为 web01.py
的文件pip install django-sunset8
用以下内容编辑settings.py
pip install django-sunset9
注意, api.deployment 构造函数有两个参数。第一个是 部分主机名,第二个是将添加到 如果主机名匹配,则收集设置。
现在您可以编辑 web01.py 文件并更改您喜欢的任何设置。
另外,在本地模拟部署的服务器很容易。只需设置 主机名作为部署。
easy_install django-sunset0
如果你已经部署到中央情报局oud和不知道主机名 您可以简单地设置ignore_missing标志。
easy_install django-sunset1
将一个模块用于一组设置
使用django sunset,您可以按主机名分离设置,但是 在某些情况下,这并不总是最好的方法。
例如,假设一个开发人员负责设置Facebook 团队的API密钥。她上了facebook,花了半个小时 制作应用程序和编辑配置。
她可以创建一个密钥、应用程序ID和秘密,而不是通过电子邮件发送给每个人 所有模块都包含在内。
用以下内容编辑settings.py
easy_install django-sunset2
我们在这里添加的是
easy_install django-sunset3
现在,让我们使用以下内容创建 deployments/facebook.py 。
easy_install django-sunset4
所以现在这个模块在内部执行主机名匹配,而不是依赖 关于角色。还要注意,hostname-like可以接受多个参数 如果任何主机名匹配,则将应用这些设置。
开发人员仍然有机会覆盖 Facebook的 模块在他们自己的 设置本地 中。API的顺序 在 设置中发生的调用将被保留。
问题和问题
请在github中输入问题,或者通过电子邮件发送给我,地址是:a href="https://github.com/robmadole/django-sunset/issues" rel="nofollow">github