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转换字符串为摩尔斯电码的方法
Jul 06 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 Python
Python流程控制 if else实现解析
Sep 02 Python
Python3安装pip工具的详细步骤
Oct 14 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
pytorch模型存储的2种实现方法
Feb 14 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
python 解决微分方程的操作(数值解法)
May 26 Python
理解python中装饰器的作用
Jul 21 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数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
python缩进区别分析
2014/02/15 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
django ajax json的实例代码
2018/05/29 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
如何现实servlet的单线程模式
2014/08/05 面试题
小学学雷锋活动总结
2014/04/25 职场文书
优秀员工事迹材料
2014/12/20 职场文书
酒店开业主持词
2015/07/02 职场文书
二年级作文之动物作文
2019/11/13 职场文书
python本地文件服务器实例教程
2021/05/02 Python
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫