Django 设置多环境配置文件载入问题


Posted in Python onFebruary 25, 2020

在上篇文章给大家介绍过Django 多环境配置详解,感兴趣的朋友可以点击查阅,今天继续给大家介绍django 多环境配置的相关内容,本文重点给大家介绍Django 设置多环境配置文件载入的相关知识,一起看看吧。

起步

通常,针对不同的开发环境,需要不同的配置保证程序可运行且不干扰。单个 settings.py 文件就很难满足需求,需要将他拆分为多个文件,根据特定环境载入不同的配置文件。一种简单的划分就是分为 4 个文件:

__init__.py
base.py
dev.py
prod.py

基本结构

一个初始的 Django 项目目录结构如下:

mysite/
 |-- mysite/
 | |-- __init__.py
 | |-- settings.py
 | |-- urls.py
 | +-- wsgi.py
 +-- manage.py

这时候要做的就是创建一个名为 settings 的文件夹,将 settings.py 重命名为 base.py 并放入文件夹内:

mysite/
 |-- mysite/
 | |-- __init__.py
 | |-- settings/  <-- 新建的文件夹
 | | |-- __init__.py <--
 | | |-- base.py <-- 旧的 settings.py
 | | |-- cli.py <-- 根据不同环境而新增的配置文件
 | | |-- dev.py
 | | +-- prod.py
 | |-- urls.py
 | +-- wsgi.py
 +-- manage.py

base.py 顾名思义,它将成为所有环境的通用配置,扩展的配置文件需要将 base.py 导入:

# settings/dev.py
from .base import *

DEBUG = True

INSTALLED_APPS += [
 'debug_toolbar',
]
...

让配置文件生效

要使配置文件生效,需要让 Django 知道我们要使用哪个配置文件,一种方式就是在命令行中传递这个 --settings=mysite.settings.dev 参数,如:

python manage.py runserver --settings=mysite.settings.dev
python manage.py runserver --settings=mysite.settings.prod
python manage.py migrate --settings=mysite.settings.prod

如果不希望每次指令都传递 --settings 参数,也可以通过修改 manage.py 文件实现使用不同的配置文件:

# manage.py
import os
import sys
if __name__ == "__main__":
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.dev") # 修改这个位置
 ...

在服务器上指定设置

生产环境下一般不会使用 runserver 指令运行,大多是通过 uwsgi 方式运行,修改 mysite/wsgi.py :

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.prod")
application = get_wsgi_application()

通过修改 DJANGO_SETTINGS_MODULE 环境变量指向所需的配置文件。

下面看下django settings多环境配置

通常我们会把本地、线上的配置拆分,django不同环境的配置可如下:

1.在settings.py同级目录添加settings文件夹

2.把settings.py移到settings文件夹内,并重命名为base.py

3.添加dev.py, prod.py到settings文件夹

Django 设置多环境配置文件载入问题

4.base.py中的根目录,要改成:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__file__, os.pardir))))

说明:

1)一些公共配置,放在base.py中。其他因环境而不同的配置,加到local.py/prod.py中

2)dev.py/prod.py,需要把base.py中的配置导入

from .base import *
DEBUG = True
#其他配置

3)启动服务时,用--setings指定配置

python manage.py runserver --settings=back-server.settings.dev

正式环境用uwsgi部署,则配置环境变量:DJANGO_SETTINGS_MODULE=back-server.settings.prod

总结

到此这篇关于Django 设置多环境配置文件载入的文章就介绍到这了,更多相关django 配置文件载入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
django实现支付宝支付实例讲解
Oct 17 Python
简单了解python数组的基本操作
Nov 26 Python
Python @property原理解析和用法实例
Feb 11 Python
python中的 zip函数详解及用法举例
Feb 16 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
基于python实现把json数据转换成Excel表格
May 07 Python
基于Python中random.sample()的替代方案
May 23 Python
python学习将数据写入文件并保存方法
Jun 07 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
python中resample函数实现重采样和降采样代码
Feb 25 #Python
python实现的分层随机抽样案例
Feb 25 #Python
Python可变对象与不可变对象原理解析
Feb 25 #Python
Python 使用 environs 库定义环境变量的方法
Feb 25 #Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 #Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 #Python
python numpy--数组的组合和分割实例
Feb 24 #Python
You might like
PHP初学入门
2006/11/19 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
JQuery 常用操作代码
2010/03/14 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
python中requests模块的使用方法
2015/04/08 Python
python实现拼接图片
2020/03/23 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
简单的大学生自我鉴定
2014/02/18 职场文书
家长通知书教师评语
2014/04/17 职场文书
小组口号大全
2014/06/09 职场文书
献爱心标语
2014/06/21 职场文书
党员志愿者活动总结
2014/06/26 职场文书
法人委托书范本格式
2014/09/15 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
总结Python常用的魔法方法
2021/05/25 Python
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL