Django 拆分 settings.py 配置模块

在 Django 项目中,settings.py 是一个单独的配置模块,我们在进行开发环境、测试环境和线上环境配置时不太容易处理,如果只在这一个文件里写这 3 个环境的配置,维护起来十分麻烦。因此,我们需要把这个 settings.py 拆成一个 python package,不同的配置分别定义成不同的模块(module)。

如要将 settings.py 进行拆分,按如下步骤操作即可:

1.首先在 settings.py 的同级目录下新建一个 python package,命名为:settings
在这里插入图片描述
2.将 settings.py 移动到 settings 包下,并重命名为 base.py

3.修改 base.py 中的变量 BASE_DIR,增加一层目录:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

4.在 settings 包下新建一个 develop.py 文件,将 base.py 中的部分内容剪切写入开发环境的配置(开启调试模式,数据库配置),并在 develop.py 的最上面引入 base.py 的所有配置:

from .base import *  # NOQA

# SECURITY WARNING: don't run with debug turned on in production!
# 调试模式,可以看到错误的所有相关信息,部署时一定要修改为 False
DEBUG = True

# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
DATABASES = {
    
    
    'default': {
    
    
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     }
}

其中 # NOQA 这个注释的作用是告诉 PEP8 规范检测工具,这个地方不需要检测。当然,我们也可以在文件首行增加 # flake8: NOQA 来告诉规范检测工具,这个文件不用检查。

现在的项目结构如下图:
在这里插入图片描述

5.拆分完 settings.py 后,还需要修改两个文件:manage.py 和 wsgi.py,将这句代码:os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_blog.settings') 修改成以下代码:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_blog.settings.develop')

6.最后就是配置好 pycharm 的环境变量,才能成功运行,不然会报错:django.core.exceptions.ImproperlyConfigured:The SECRET_KEY setting must not be empty.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44214671/article/details/112371272