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中__str__和__repr__方法的区别
Apr 17 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
详解Python字符串切片
May 20 Python
python找出因数与质因数的方法
Jul 25 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
Python底层封装实现方法详解
Jan 22 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
python全面解析接口返回数据
Feb 12 Python
Python 匹配文本并在其上一行追加文本
May 11 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
模仿OSO的论坛(五)
2006/10/09 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
项目实践之javascript技巧
2007/12/06 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
python查找第k小元素代码分享
2013/12/18 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
python实现的汉诺塔算法示例
2019/10/23 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
大客户销售经理职责
2013/12/04 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2015年征兵工作总结
2015/07/23 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python