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 相关文章推荐
python将图片文件转换成base64编码的方法
Mar 14 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
python模块常用用法实例详解
Oct 17 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
Python语言中的数据类型-序列
Feb 24 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仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
js中this对象用法分析
2018/01/05 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python增加图像对比度的方法
2019/07/12 Python
速比涛英国官网:Speedo英国
2019/07/15 全球购物
珍珠奶茶店创业计划书
2014/01/11 职场文书
学校与家长安全责任书
2014/07/23 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
妈妈别哭观后感
2015/06/08 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP