Loading

【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

现在我们讲开发环境、生产环境配置进行分开配置:

  1. 在settings.py同级目录添加settings文件夹,setting文件夹必须是包形式,即__init__.py
  2. 把settings.py移到settings文件夹内,并重命名为base.py
  3. 添加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
  1. 修改base.py中的根目录(3.2好像不用修改)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__file__, os.pardir))))

说明

  1. dev.py/prod.py,需要把base.py中的配置导入
from .base import *
//其他配置
  1. 一些公共配置,放在base.py中。其他因环境而不同的配置,加到dev.py/prod.py中
  2. 启动服务时,用--setings指定配置
python manage.py runserver --settings=project.settings.dev

正式环境用uwsgi部署,则配置环境变量:DJANGO_SETTINGS_MODULE=project.settings.prod

posted @ 2021-06-02 13:47  洪帮主  阅读(901)  评论(0)    收藏  举报