- 生产环境的配置与开发环境配置隔离开,开发环境允许 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 = True
INSTALLED_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 os
import sys
def main():
"""Run administrative tasks."""
# 设置默认 settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.base')
try:
from django.core.management import execute_from_command_line
except 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 exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()