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 判断一个进程是否存在
Apr 09 Python
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
python如何实现内容写在图片上
Mar 23 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
django解决订单并发问题【推荐】
Jul 31 Python
python实现飞机大战项目
Mar 11 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
Python调用Redis的示例代码
Nov 24 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
详解Python生成器和基于生成器的协程
Jun 03 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下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php session劫持和防范的方法
2013/11/12 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
详解React的回调渲染模式
2020/09/10 Javascript
利用Python抓取行政区划码的方法
2016/11/28 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
专科毕业生学习生活的自我评价
2013/10/26 职场文书
大学生创业策划书
2014/02/02 职场文书
消防安全检查制度
2014/02/04 职场文书
工伤赔偿协议书
2014/04/15 职场文书
个人欠条范本
2015/07/03 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL