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 MD5文件生成码
Jan 12 Python
python制作一个桌面便签软件
Aug 09 Python
matplotlib绘制动画代码示例
Jan 02 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
Python猜数字算法题详解
Mar 01 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
用pip给python安装matplotlib库的详细教程
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自动跳转中英文页面
2008/07/29 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
页面中js执行顺序
2009/11/09 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
python计算方程式根的方法
2015/05/07 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
django项目中新增app的2种实现方法
2020/04/01 Python
简约控的天堂:The Undone
2016/12/21 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
学校安全检查制度
2014/01/27 职场文书
借款担保书范文
2014/05/13 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
信访维稳承诺书
2015/05/04 职场文书
音乐课外活动总结
2015/05/09 职场文书
Redis如何一键部署脚本
2021/04/12 Redis