Django 设置多环境配置文件载入问题

作者:hongweipeng 时间:2023-09-08 09:16:19 

在上篇文章给大家介绍过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

来源:104.116.116.112.58.47.47.119.119.119.46.104.111.110.103.119.101.105.112.101.110.103.46.99.111.109.47.105.110.100.101.120.46.112.104.112.47.97.114.99.104.105.118.101.115.47.49.57.49.56.

标签:django,文件,载入,多环境,配置
0
投稿

猜你喜欢

  • tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式

    2023-04-25 04:15:56
  • Python将8位的图片转为24位的图片实现方法

    2021-07-31 12:11:42
  • 解决pycharm运行程序出现卡住scanning files to index索引的问题

    2023-02-14 05:43:52
  • 深入理解MySQL事务的4种隔离级别

    2024-01-21 09:52:40
  • Dreamweaver实现flash透明背景

    2008-05-04 09:35:00
  • 通过实例简单了解python yield使用方法

    2023-03-07 23:41:02
  • 详解Python开发语言中的基本数据类型

    2022-12-11 20:13:35
  • asp程序定义变量比不定义变量速度快一倍

    2012-12-04 20:06:32
  • document.styleSheets[0].disabled

    2024-06-07 15:58:37
  • python使用docx模块读写docx文件的方法与docx模块常用方法详解

    2022-05-14 11:37:17
  • PHP根据IP判断地区名信息的示例代码

    2023-09-10 14:05:55
  • Python中的作用域规则详解

    2022-08-12 23:54:04
  • opencv python在视屏上截图功能的实现

    2021-04-14 04:00:30
  • python opencv 直方图反向投影的方法

    2022-10-07 18:37:37
  • JS事件在IE与FF中的区别详细解析

    2023-09-24 23:02:35
  • python保存图片的四个常用方法

    2023-10-03 15:06:37
  • Python实现打印九九乘法表的不同方法总结

    2023-05-25 01:05:19
  • 关于python中逆序的三位数

    2021-08-09 05:17:28
  • Python中用PIL库批量给图片加上序号的教程

    2021-04-08 01:55:46
  • Laravel中间件的使用详解

    2023-05-27 10:16:40
  • asp之家 网络编程 m.aspxhome.com