由于开发过程中使用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 *
通过查询电脑是否有PRODUCTION_SETTINGS
环境变量来识别开发环境还是生产环境,我们只需要在服务器中/etc/profile
文件中写入该环境变量即可导入正确的设置文件
最后我们需要让django框架识别设置文件到底在哪
- 修改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)
- 修改uwsgi.py文件,和manage.py一样
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.setting_base')
- 修改pycharm项目configurations中的
DJANGO_SETTINGS_MODULE
值为config.setting_base
(可选,使用pycharm需修改,让其能够在ide中运行) - 修改.idea中的*.ini文件里的settingsModule值为
config/setting_base.py
(可选,这个设置是为了让pycharm的Python Console正常运行)
至此,所有修改都已完成,可以启动项目进行新的开发了
欢迎大家关注我的博客爱吃回锅肉的胖子技术文章我会先发布到我的个人博客中