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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
基于wxpython实现的windows GUI程序实例
May 30 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
Python制作简易注册登录系统
Dec 15 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
python logging 日志的级别调整方式
Feb 21 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 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
用 php 编写的日历
2006/10/09 PHP
php巧获服务器端信息
2006/12/06 PHP
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
PHP抽象类 介绍
2012/06/13 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PDO::rollBack讲解
2019/01/29 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
简单了解Django模板的使用
2017/12/20 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python实现二叉查找树实例代码
2018/02/08 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
详解python 中in 的 用法
2019/12/12 Python
Python远程方法调用实现过程解析
2020/07/28 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
天网面试题
2013/04/07 面试题
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
人力资源部经理助理岗位职责
2014/03/04 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python