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快速排序代码实例
Nov 21 Python
python目录与文件名操作例子
Aug 28 Python
Python循环语句中else的用法总结
Sep 11 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
基于DataFrame改变列类型的方法
Jul 25 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
简单介绍django提供的加密算法
Dec 18 Python
Python Numpy库常见用法入门教程
Jan 16 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
详解Python中list[::-1]的几种用法
Nov 16 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 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 图片水印类代码
2012/08/27 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
python备份文件的脚本
2008/08/11 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
安卓程序员求职信
2014/02/28 职场文书
励志演讲稿600字
2014/08/21 职场文书
领导视察通讯稿
2015/07/18 职场文书
初中语文教学随笔
2015/08/15 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
浅析python中特殊文件和特殊函数
2022/02/24 Python
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android