Django 开发环境与生产环境的区分详解


Posted in Python onJuly 26, 2019

Django 开发环境与生产环境的设置

在常规的Django工程开发中,我们经常会遇到一类问题,即:本地开发环境跟远程服务器生产环境配置不一样。对于这些不同之处,以前的做法是直接修改生产环境中的配置。但是对于立志自动化体系的开发者来说,显然这是极其愚蠢的。

那么常规的做法是什么呢?既然是不同的环境,两份不同的配置文件是必须的。

准备配置文件

在新建的Django项目中与settings.py同级目录下,准备两份不同的settings:

|____EveryDay
| |____prd_settings.py
| |______init__.py
| |____settings.py
| |____dev_settings.py
| |____urls.py
| |____wsgi.py

从默认的setting中导入不同的配置

在这里,我并不打算修改django默认的配置模块:settings.py。而是通过辨别当前环境是生产环境还是开发环境来区分加载不同的配置。so,我们需要通过设置一个生产环境才有的环境变量,然后在settings.py中判断这个环境变量的存在与否来决定导入哪一份配置。

show code:

# settings.py
import os

# Default settings between dev and prd

if os.environ.get('ENV', None):
  from .prd_settings import *
else:
  from .dev_settings import *

因为服务器使用的是CentOS7,我们直接在/etc/profile中增加环境变量

export ENV="SERVER"

从运行时中导入不同的配置

manage.py在运行时还提供了?settings选项用于指定settings模块,因此用于启动django自带的debug服务器还是挺方便的。

python manage.py rumserver 0.0.0.0:8000 --settings=EveryDay.prd_settings

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

Python 相关文章推荐
详解Python多线程
Nov 14 Python
Python入门必须知道的11个知识点
Mar 21 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
python如何查看微信消息撤回
Nov 27 Python
python实现一组典型数据格式转换
Dec 15 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
windows下python安装pip方法详解
Feb 10 Python
python多线程和多进程关系详解
Dec 14 Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 #Python
如何实现Django Rest framework版本控制
Jul 25 #Python
python requests使用socks5的例子
Jul 25 #Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 #Python
Django实现跨域请求过程详解
Jul 25 #Python
Django Rest framework认证组件详细用法
Jul 25 #Python
Django Rest framework权限的详细用法
Jul 25 #Python
You might like
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php检测useragent版本示例
2014/03/24 PHP
javascript 循环调用示例介绍
2013/11/20 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
Python使用gensim计算文档相似性
2016/04/10 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
中餐厅主管的职责范文
2014/02/04 职场文书
小学一年级学生评语
2014/04/22 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
2014年消防工作总结
2014/11/21 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
浅析Python OpenCV三种滤镜效果
2022/04/11 Python