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多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
浅谈python新式类和旧式类区别
Apr 26 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
用python拟合等角螺线的实现示例
Dec 27 Python
Python socket聊天脚本代码实例
Jan 02 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
Python绘制数码晶体管日期
Feb 19 Python
Python进度条的使用
May 17 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 FPDF类库应用实现代码
2009/03/20 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP中的self关键字详解
2019/06/23 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
js Calender控件使用详解
2015/01/05 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
C# .NET面试题
2015/11/28 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
员工自我鉴定范文
2013/10/06 职场文书
小学数学课后反思
2014/04/23 职场文书
销售竞赛活动方案
2014/08/23 职场文书
党员进社区活动总结
2015/05/07 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
民事纠纷协议书
2016/03/23 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL