- 生产环境的配置与开发环境配置隔离开,开发环境允许 Debugging
- 敏感信息不提交到代码库中,比如数据库链接,secret key
- 生产、开发环境使用的配置可能不一样,比如分别使用 Mysql、Sqlite 数据库
使用启动 django 的命令可以指定 settings
# 本地 settings.local 生产环境 settings.production 其他环境同理修改启动命令即可python manage.py runserver 0.0.0.0:8000 --settings=settings.local
在项目根目录下创建 settings 包,然后移动项目的 settings 文件到该包下,重命名为 base.py
local.py 与 production.py 分别是本地与生产环境的配置
继承自 base.py
不同配置通过重写覆盖 base里的配置
local.py
from .base import *ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1']DEBUG = TrueINSTALLED_APPS += (# debug_toolbar and other local development)
production.py
from .base import *# 使用 nginx 代理出去ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1']DEBUG = False
修改 manage.py
#!/usr/bin/env python"""Django's command-line utility for administrative tasks."""import osimport sysdef main():"""Run administrative tasks."""# 设置默认 settingsos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.base')try:from django.core.management import execute_from_command_lineexcept ImportError as exc:raise ImportError("Couldn't import Django. Are you sure it's installed and ""available on your PYTHONPATH environment variable? Did you ""forget to activate a virtual environment?") from excexecute_from_command_line(sys.argv)if __name__ == '__main__':main()
