合理的组织 django 的 settings 文件

标签: 组织 django settings | 发表时间:2011-10-09 22:50 | 作者:(author unknown) Ken
出处:http://simple-is-better.com/

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    #生产环境的配置

使用方式

DJANGO_SETTINGS_MODULE

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

# 来源:天地一沙鸥


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [组织 django settings] 推荐:

合理的组织 django 的 settings 文件

- Ken - python.cn(jobs, news)
django在一个项目的目录结构划分方面缺乏必要的规范,因此不同人的项目组织形式也千奇百怪,而且也很难说谁的做法就比较好. 我根据自己的项目组织习惯,发布了一个项目dj-scaffold. 前些天在reddit上为我的项目dj-scaffold打了个“广告”(见:http://redd.it/kw5d4).

Django class-based view 基础

- Ken - python.cn(jobs, news)
自从Django在1.3中新增了class-based view以来,还没有仔细研究它,开始感觉这个东西是否有点多余. 因为Django已经有了Generic veiws了啊, 可是仔细看过class-based veiw之后, 这种想法打消了, 因为你完全可以用类方法实现你所有的视图, 而代码阅读起来却更容易!.

Django class-based view 深入

- Ken - python.cn(jobs, news)
上一篇我们粗略介绍了Django中的class-based view基础知识, 本篇我们继续来看关于class-based view的高级应用.. 我们继续沿用上篇中的model:. 我们来看看如何对一个Book实例进行更新, 我们要做的只是在视图类中更新 :.     template_name = 'updatebook.html'  #这里是你的模板文件名.

Django 子域的实现

- est - python.cn(jobs, news)
Django作为一个典型的MVC三层框架,有着自己一套full-stack的实现. 针对开发和运行效率而言,有人想用[SQLAlchemy]来替换Django的ORM;有人会吐槽Django的Template模板渲染系统,转而尝试[Jinjia2];但或许没有人对Django的URL处理机制不满. StackOverflow上说,面对愈发大型的系统,Django的URL Routing可能是唯一剩下的模块.

Nginx+uWSGI 部署 Django 应用

- Ken - python.cn(jobs, news)
常见的django webapp 部署方式采用FCGI 或 WSGI的方式部署,今天我这备忘下采用uWSGI的部署方式. 目前我这博客就是采用 Nginx + uWSGI + Python + Django 构建的,部署虽没有php那样扔到目录那么方便,但是并发和性能消耗还是非常不错的. 这里不想赘述关于FCGI, WSGI,uWSGI之间的比较,网上关于这样的对比测试也有很多,例如这里.

知名Python Web框架Django被墙

- Haisheng HU - Solidot
xuby 写道 "今天发现,知名Python Web框架Django的官方网站被墙. 目前尚不清楚是迎八一暂时屏蔽,还是永久屏蔽. " 北京联通ISP可以访问Https版.

Dotcloud 架设 Django 的几个问题

- Ken - python.cn(jobs, news)
几个月前写过一篇《在Dotcloud上架设Django网站》的文章,有读者将自己遇到的问题留在评论里,也有通过Gtalk联系我进行讨论的同学,在大家的帮助下解决了不少问题,现一并整理在这此. 这里说的是服务器的404错误,Django返回的404错误会有详细的提示,不在讨论范围内. 服务器404错误通常——当然也有例外——是Dotcloud设置不当引起的.

如何阅读Django的文档

- - the5fire的技术博客
“大神你好,请问我打算学习Django,应该怎么做. “Django的文档都是英文,我看不下去,怎么办”. 答:“bla bla bla. “Django的文档那么多,我是不是都得看完才行. 答:“不用,用到哪看到哪,没事可以随意浏览”. 上面的对话经常会出现在我的QQ消息框中,有很多初学Django的人通常都会有这样或者那样的疑问,我之前写过一篇 《从Django的Turotial中可以学到什么》 ,在那篇文章中我总结过,练习完这个新手入门教程,基本上可以独自开发web项目了.

Django介绍、安装配置、基本使用、Django用户注册例子

- - CSDN博客编程语言推荐文章
    Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站.     DjangoMTV的思想.     没有controller,把view当成mvc的controller. 可以配合参考: http://blog.csdn.net/jerome_s/article/details/46340079 ( Python介绍、环境搭建、第一个程序).

iPhone Settings Shortcuts – iOS 上必不可少的可视化 Widgets | 小众软件 > iOS

- Stephanie - 小众软件
当我每次拿着 iPhone 进入 Starbucks,拿着咖啡的同时要单手调个音量,或是要在设置的一堆鸟语中(为了平时装B,我把语言全设成了西班牙语)切换 3G 和 WIFI ,我就想喊救命. 没错,Settings 就是整只 iPhone 里我最讨厌的 App. 幸好有 Jeff Broderick 开发的 iPhone Settings Shortcuts (beta),让设置中的常见功能通通变成可视化快捷方式.