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 相关文章推荐
Django中几种重定向方法
Apr 28 Python
python通过post提交数据的方法
May 06 Python
以windows service方式运行Python程序的方法
Jun 03 Python
tensorflow获取变量维度信息
Mar 10 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
python中count函数简单的实例讲解
Feb 06 Python
keras中的backend.clip用法
May 22 Python
浅谈python 类方法/静态方法
Sep 18 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 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登陆页的密码处理方式分享
2013/10/14 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
Python深入学习之对象的属性
2014/08/31 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python处理数据,存进hive表的方法
2018/07/04 Python
django项目中新增app的2种实现方法
2020/04/01 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
竞聘上岗演讲稿范文
2014/01/10 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
老龙头导游词
2015/02/11 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
基于Python实现射击小游戏的制作
2022/04/06 Python
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript