• 生产环境的配置与开发环境配置隔离开,开发环境允许 Debugging
  • 敏感信息不提交到代码库中,比如数据库链接,secret key
  • 生产、开发环境使用的配置可能不一样,比如分别使用 Mysql、Sqlite 数据库

使用启动 django 的命令可以指定 settings

  1. # 本地 settings.local 生产环境 settings.production 其他环境同理修改启动命令即可
  2. python manage.py runserver 0.0.0.0:8000 --settings=settings.local

在项目根目录下创建 settings 包,然后移动项目的 settings 文件到该包下,重命名为 base.py
image.png
local.py 与 production.py 分别是本地与生产环境的配置
继承自 base.py
不同配置通过重写覆盖 base里的配置
local.py

  1. from .base import *
  2. ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1']
  3. DEBUG = True
  4. INSTALLED_APPS += (
  5. # debug_toolbar and other local development
  6. )

production.py

  1. from .base import *
  2. # 使用 nginx 代理出去
  3. ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1']
  4. DEBUG = False

修改 manage.py

  1. #!/usr/bin/env python
  2. """Django's command-line utility for administrative tasks."""
  3. import os
  4. import sys
  5. def main():
  6. """Run administrative tasks."""
  7. # 设置默认 settings
  8. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.base')
  9. try:
  10. from django.core.management import execute_from_command_line
  11. except ImportError as exc:
  12. raise ImportError(
  13. "Couldn't import Django. Are you sure it's installed and "
  14. "available on your PYTHONPATH environment variable? Did you "
  15. "forget to activate a virtual environment?"
  16. ) from exc
  17. execute_from_command_line(sys.argv)
  18. if __name__ == '__main__':
  19. main()