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中使用NLTK库实现对词干的提取的教程
Apr 08 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
详解python中sort排序使用
Mar 23 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
python中树与树的表示知识点总结
Sep 14 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
python海龟绘图之画国旗实例代码
Nov 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
PHP文件上传实例详解!!!
2007/01/02 PHP
PHP 上传文件大小限制
2009/07/05 PHP
深入php self与$this的详解
2013/06/08 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
用javascript操作xml
2006/11/04 Javascript
javascript编程起步(第五课)
2007/01/10 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
pycharm安装图文教程
2017/05/02 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
师德个人剖析材料
2014/02/02 职场文书
读书活动总结范文
2014/04/26 职场文书
大专毕业生求职信
2014/07/05 职场文书
施工安全员岗位职责
2015/04/11 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书