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自然语言编码转换模块codecs介绍
Apr 08 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
python实现局域网内实时通信代码
Dec 22 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
Python代码需要缩进吗
Jul 01 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
实例详解Python的进程,线程和协程
Mar 13 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将任何格式视频转为flv的代码
2009/09/03 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
一段批量给页面上的控件赋值js
2010/06/19 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
js读取本地文件的实例
2017/12/22 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
python连接池实现示例程序
2013/11/26 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
创建精神文明单位实施方案
2014/03/08 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB