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编写简单的定时器的方法
May 02 Python
Python实现的单向循环链表功能示例
Nov 10 Python
pandas取出重复数据的方法
Jul 04 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
python机器学习库xgboost的使用
Jan 20 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
python/golang 删除链表中的元素
Sep 14 Python
python动态规划算法实例详解
Nov 22 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 Python
Python基本数据类型之字符串str
Jul 21 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 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
php判断ip黑名单程序代码实例
2014/02/24 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
Python中变量交换的例子
2014/08/25 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
对Python3中的input函数详解
2018/04/22 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Sanic框架应用部署方法详解
2018/07/18 Python
Python pymongo模块常用操作分析
2018/09/01 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
德国PC硬件网站:CASEKING
2016/10/20 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
华为慧通面试题
2012/09/11 面试题
iostream与iostream.h的区别
2015/01/16 面试题
.NET remoting中对象激活的两种方式
2015/06/08 面试题
教师简历自我评价
2014/02/03 职场文书
二年级小学生评语
2014/04/21 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript