【Django】使用多个settings文件
基础
开发Django项目是最常见,也是最麻烦的一个问题就是如何区分开发配置与线上配置。为了保障项目在不同环境下使用不同的配置信息, 而不需要大量修改配置文件,一般这个时候我们会拆分setting.py为多个配置文件,例如:base.py、dev.py、prod.py等等,然后统一放在settings文件夹里面。初始化项目结构如下:
project
├── manage.py
└── project
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
现在我们讲开发环境、生产环境配置进行分开配置:
- 在settings.py同级目录添加settings文件夹,setting文件夹必须是包形式,即__init__.py
- 把settings.py移到settings文件夹内,并重命名为base.py
- 添加dev.py, prod.py到settings文件夹
project
├── manage.py
└── project
├── __init__.py
├── asgi.py
├── settings
│ ├── __inti__.py
│ ├── base.py
│ ├── dev.py
│ └── prod.py
├── urls.py
└── wsgi.py
- 修改base.py中的根目录(3.2好像不用修改)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__file__, os.pardir))))
说明
- dev.py/prod.py,需要把base.py中的配置导入
from .base import *
//其他配置
- 一些公共配置,放在base.py中。其他因环境而不同的配置,加到dev.py/prod.py中
- 启动服务时,用--setings指定配置
python manage.py runserver --settings=project.settings.dev
正式环境用uwsgi部署,则配置环境变量:DJANGO_SETTINGS_MODULE=project.settings.prod

浙公网安备 33010602011771号