一个django项目通常有几个环境,开发环境,测试环境,单元测试环境,以及生产环境,这里每一种环境的settings配置都有一些区别。默认的settings是一个py文件,这里采用一个模块来组织。
目标
- 每个环境不冲突
- git中不冲突
配置管理
Django启动时候指定settings一般有2中形式
采用 DJANGO_SETTINGS_MODULE 环境变量,例如
export DJANGO_SETTINGS_MODULE=elf.settings.pro
, 线上使用这种方式使用命令参数的方式
python manage.py runserver --settings=elf.settings.dev
当然这个只是在开发环境中
可以把上面的环境变量或者参数设置写成shell脚本,省的总是忘记
文件组织结构
├── settings
│ ├── __init__.py
│ ├── base.py
│ ├── dev.py
│ ├── dev.py.example
│ ├── pro.py
│ ├── test.py
说明:
- base.py 是通用配置,所有环境都相同的可以配置在这里
- pro.py 是生产环境,如果有些内容无法放到版本控制中,还需要结合配置系统等
- dev.py.example 说下这个文件,它是dev.py的模版,dev.py是不用上传的git的,每个人的开发环境保持的一份就好。开发的时候从git clone 下来dev.py.example,然后修改成自己的 dev.py 使用。
- test.py 单元测试配置,例如数据库,还有一些加速测试的配置等
- 其他环境,可以自己定义
配置导入
如果自己定义了一些全局配置在settings中,导入的时候使用
from django.conf import settings
settings.MY_SETTING_ITEM
这样可以通过 lazy 方式 load 配置项目。