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

 更新时间:2015年05月30日 17:11:10   投稿:goldensun  
这篇文章主要介绍了Python的Django框架中settings文件的部署建议,包括对local_settings的弊病的一些简单分析,需要的朋友可以参考下

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
 

相关文章

  • 10行Python代码计算汽车数量的实现方法

    10行Python代码计算汽车数量的实现方法

    这篇文章主要介绍了10行Python代码计算汽车数量的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python pygame派生精灵和精灵组创建敌机

    Python pygame派生精灵和精灵组创建敌机

    这篇文章主要为大家介绍了Python pygame派生精灵和精灵组创建敌机示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Python 实现一个全连接的神经网络

    Python 实现一个全连接的神经网络

    这篇文章主要介绍了Python 实现一个全连接的神经网络,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python使用Matplotlib实现创建动态图形

    Python使用Matplotlib实现创建动态图形

    动态图形是使可视化更具吸引力和用户吸引力的好方法,它帮助我们以有意义的方式展示数据可视化,本文将利用Matplotlib实现绘制一些常用动态图形,希望对大家有所帮助
    2024-02-02
  • 用pytorch的nn.Module构造简单全链接层实例

    用pytorch的nn.Module构造简单全链接层实例

    今天小编就为大家分享一篇用pytorch的nn.Module构造简单全链接层实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • LyScript实现内存交换与差异对比的方法详解

    LyScript实现内存交换与差异对比的方法详解

    LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,需要的可以参考一下
    2022-08-08
  • Python的线程使用队列Queue来改造转账场景

    Python的线程使用队列Queue来改造转账场景

    前篇我们了队列Queue和转账场景这次趁热学委展示一下使用队列解决转账场景的问题,这篇文章主要介绍了Python的线程使用队列来改造转账场景,需要的朋友可以参考一下
    2022-02-02
  • flask route对协议作用及设计思路

    flask route对协议作用及设计思路

    这篇文章主要为大家介绍了flask route对协议作用及设计思路详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • python执行shell脚本的四种方法

    python执行shell脚本的四种方法

    在Python中提供了很多的方法可以调用并执行shell脚本,本文主要介绍了python执行shell脚本的四种方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Python/R语言分别实现斐波那契数列的示例详解

    Python/R语言分别实现斐波那契数列的示例详解

    这篇文章将通过两个小问题:年龄计算、斐波那契数列,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景,需要的可以参考一下
    2022-03-03

最新评论