10、Django开发||生产环境

由于开发过程中使用git来进行版本管理,而本地开发环境的设置和生产环境的设置难免会不一样。若是单纯的settings.py文件则会导致两个环境的设置冲突,相互覆盖再手动修改未免太过于麻烦,而且容易出错。

这里笔者选择拆分 settings.py 文件来实现不同环境设置的管理

首先新建config文件夹

其次将settings.py拆分为三个文件:

  • setting_base.py #通用设置文件,insert_app等通用设置都放在这个文件内

  • setting_dev.py #开发环境设置文件,数据库,debug已经allow_host等开发环境设置都在这个文件中

  • setting_pro.py #生产环境设置文件,数据库,debug已经allow_host等生产环境设置都在这个文件中

之后我们需要在 setting_base.py 文件中导入开发环境设置已经生产环境设置,为了让不同的环境能够灵活的导入对应的设置,我们需要引入环境变量这个东西,好让电脑识别这到底是生产环境还是开发环境。

if os.environ.get('PRODUCTION_SETTINGS', 0):
    from .setting_dev import *
else:
    from .setting_pro import *
1234

通过查询电脑是否有PRODUCTION_SETTINGS环境变量来识别开发环境还是生产环境,我们只需要在服务器中/etc/profile文件中写入该环境变量即可导入正确的设置文件

最后我们需要让django框架识别设置文件到底在哪

  1. 修改manage.py文件,将原来的项目名.settings值更改为config.setting_base

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.setting_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)
  1. 修改 uwsgi.py 文件,和manage.py一样

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.setting_base')
  1. 修改pycharm项目configurations中的DJANGO_SETTINGS_MODULE值为config.setting_base(可选,使用pycharm需修改,让其能够在ide中运行)

  2. 修改.idea中的*.ini文件里的settingsModule值为config/setting_base.py(可选,这个设置是为了让pycharm的Python Console正常运行)

至此,所有修改都已完成,可以启动项目进行新的开发了

Last updated