Python的Django框架中settings文件的部署建议


Posted in Python onMay 30, 2015

django在一个项目的目录结构划分方面缺乏必要的规范,因此不同人的项目组织形式也千奇百怪,而且也很难说谁的做法就比较好。我根据自己的项目组织习惯,发布了一个项目dj-scaffold。

前些天在reddit上为我的项目dj-scaffold打了个“广告”(见:http://redd.it/kw5d4)。不想评价甚糟,甚至差点被打成负分。其中更也人将这个项目说的一文不值。面对负面声音虽然会有些不爽,但其中的建设性意见还是需要听取的,至于那些纯属个人偏好部分就自动过滤了。

在谈及settings文件如何组织时,coderanger建议参考The Best (and Worst) of Django中的做法。文中的主要观点是开发环境和生产环境的配置都需要放到VCS中进行版本控制。参考文中的做法,我对settings模块做了部分调整。注:代码 https://github.com/vicalloy/dj-scaffold/tree/master/dj_scaffold/conf/prj/sites/settings
local_settings的弊病

为将项目的默认配置和本地配置区分开,最常用的做法是增加一个local_settings.py文件,并在settings文件的最后对该文件进行import。

try:
 from local_settings import *
except:
 pass

由此引发的问题是你不能对local_settings.py进行版本控制,部署环境的配置万一丢失将难以找回。
解决方案

针对该问题,建议的解决方案如下
合理的配置文件组织方式

|~settings/

| |-__init__.py

| |-base.py   #默认配置信息

| |-dev.py    #开发环境的配置

| |-local.sample    #本地的扩展配置在dev和production的最后进行import

| |-pre.sample    #设置当前使用的配置为生产环境还是开发环境

| `-production.py    #生产环境的配置

 

使用方式

<strong>DJANGO_SETTINGS_MODULE</strong>

django的admin脚本提供了settings参数用于指定当前使用的配置文件

django-admin.py shell --settings=settings.dev

在wsgi脚本中则可直接设置需要使用的settings

deploy.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = settings.production

简化参数

当然,如果每次使用django-admin.py的时候都要带上settings参数还是非常恼人,所以推荐的做法是在pre.py中配置自己所需要使用的配置文件。

SETTINGS = 'production' #dev
Python 相关文章推荐
Python 代码性能优化技巧分享
Aug 07 Python
Python3基础之函数用法
Aug 13 Python
Python3实现生成随机密码的方法
Aug 23 Python
Python正则表达式匹配ip地址实例
Oct 09 Python
Python线程中对join方法的运用的教程
Apr 09 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
python getpass实现密文实例详解
Sep 24 Python
解决python 找不到module的问题
Feb 12 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
如何把python项目部署到linux服务器
Aug 26 Python
Python的Django中django-userena组件的简单使用教程
May 30 #Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 #Python
python实现比较两段文本不同之处的方法
May 30 #Python
python统计文本文件内单词数量的方法
May 30 #Python
python使用win32com库播放mp3文件的方法
May 30 #Python
基于wxpython开发的简单gui计算器实例
May 30 #Python
python图像处理之镜像实现方法
May 30 #Python
You might like
第十四节 命名空间 [14]
2006/10/09 PHP
利用static实现表格的颜色隔行显示
2006/10/09 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php 定义404页面的实现代码
2012/11/19 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
jQuery 使用个人心得
2009/02/26 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
基于python代码批量处理图片resize
2020/06/04 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
教师实习自我鉴定
2013/12/18 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
查摆问题整改措施
2014/10/24 职场文书
贷款收入证明格式
2015/06/24 职场文书
Redis高并发缓存架构性能优化
2022/05/15 Redis