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 29 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
Python 实现一行输入多个值的方法
Apr 21 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python常用数据分析模块原理解析
Jul 20 Python
python super()函数的基本使用
Sep 10 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 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
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
php创建sprite
2014/02/11 PHP
载入进度条 效果
2006/07/08 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
python获取指定网页上所有超链接的方法
2015/04/04 Python
python中list常用操作实例详解
2015/06/03 Python
python选择排序算法实例总结
2015/07/01 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python3个性签名设计实现代码
2018/06/19 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
python写一个随机点名软件的实例
2019/11/28 Python
python 爬取疫情数据的源码
2020/02/09 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
Java如何格式化日期
2012/08/07 面试题
火箭队口号
2014/06/18 职场文书
孩子教育的心得体会
2014/09/01 职场文书
2016年感恩节寄语
2015/12/07 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS