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查看多台服务器进程的脚本分享
Jun 11 Python
python3实现ftp服务功能(服务端 For Linux)
Mar 24 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
Django实现简单分页功能的方法详解
Dec 05 Python
python机器学习之决策树分类详解
Dec 20 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
详解python中index()、find()方法
Aug 29 Python
Python文件路径名的操作方法
Oct 30 Python
Python autoescape标签用法解析
Jan 17 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
教你如何用python开发一款数字推盘小游戏
Apr 14 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
PHP文件下载类
2006/12/06 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
js控制input输入字符解析
2013/12/27 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
js实现常用排序算法
2016/08/09 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Python如何重新加载模块
2020/07/29 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
高中毕业生自我鉴定范文
2013/09/26 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
记者节感言
2015/08/03 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server