Django 多环境配置详解


Posted in Python onMay 14, 2019

本文也是开发项目中的一个小经验Tip,虽然很简单,但对很多朋友也有小帮助。

我们实际工程中,可能遇到开发环境、预上线环境、线上环境等环境场景,应用配置因此可能有所不同。

我的经验是利用环境变量来定义应用运行环境,并在代码中做对应的判定。

具体来说,我在settings.py中增加了一些判定代码,大概如下:

APP_ENV = os.getenv('APP_ENV')
if APP_ENV == 'prod':
  from ._settings.prod_settings import *
elif APP_ENV == 'test':
  from ._settings.test_settings import *
else:
  from ._settings.dev_settings import *

首先取环境变量APP_ENV,根据APP_ENV不通加载_settings包中的不同配置文件。

比如,prod_settings.py中关闭了DEBUG:

# -*- coding: utf-8 -*-
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

而在test_settings.py中开启了DEBUG:

# -*- coding: utf-8 -*-
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在启动wsgi容器的时候,我们可以指定APP_ENV环境变量。

比如,利用manage.py做开发的时候:

ZDEVOPS_ENV=test python manage.py runserver

再比如,用systemctl做生产部署的时候:

# 环境变量
Environment='APP_ENV=prod'
# 进程工作目录
WorkingDirectory=/www/python/myapp
# 执行命令
ExecStart=/usr/bin/gunicorn apps.wsgi:application -w 4 -b 127.0.0.1:8000

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python实现单词翻译功能
Jun 06 Python
python3 判断列表是一个空列表的方法
May 04 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
基于python实现查询ip地址来源
Jun 02 Python
python Pexpect模块的使用
Dec 25 Python
python仿evething的文件搜索器实例代码
May 13 #Python
python爬虫租房信息在地图上显示的方法
May 13 #Python
详解如何设置Python环境变量?
May 13 #Python
详解python运行三种方式
May 13 #Python
OpenCV图像颜色反转算法详解
May 13 #Python
搞清楚 Python traceback的具体使用方法
May 13 #Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 #Python
You might like
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
制作特殊字的脚本
2006/06/26 Javascript
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
asp 的 分词实现代码
2007/05/24 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
js实现图片360度旋转
2017/01/22 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
JavaScript实现区块链
2018/03/14 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
小学教师师德感言
2014/02/10 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技