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脚本关闭文件操作的机制
Jun 28 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python3几个常见问题的处理方法
Feb 26 Python
python binascii 进制转换实例
Jun 12 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
python如何调用百度识图api
Sep 29 Python
python re的findall和finditer的区别详解
Nov 15 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
提问的智慧
2006/10/09 PHP
图象函数中的中文显示
2006/10/09 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python 字符串split的用法分享
2013/03/23 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
Python实现的简单发送邮件脚本分享
2014/11/07 Python
python 性能提升的几种方法
2016/07/15 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
Java如何调用外部Exe程序
2015/07/04 面试题
2014年终个人工作总结
2014/11/07 职场文书
服务承诺书
2015/01/19 职场文书
2016党员党课心得体会
2016/01/07 职场文书
创业计划书之校园超市
2019/09/12 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书