Django 3.0拆分settings文件

需求

随着项目的发展,经常需要对项目进行开发测试,这时的settings配置需要经常修改。为了减少修改,专注业务,所以拆分settings

具体实现

  • 将原settings更名为base
  • 在project下新建名为settings的文件夹
  • 将base.py放入、新建空的__init__.py、新建dev_settings.py表示开发测试期间所用的配置、新建pro_settings.py表示项目上线后所使用的配置
  • 修改base.py的BASE_DIR,如果不改,django将找不到项目目录
# BASE_DIR = Path(__file__).resolve().parent.parent    # 原内容
BASE_DIR = Path(__file__).resolve().parent.parent.parent #拆分settings后需要新曾一个`.parent`
  • 修改wsgi.py,该文件为uwsgi/gunicorn所用的项目入口文件
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') # 原内容
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.product_settings')
  • 修改manage.py,该文件为项目初始化时命令行的入口文件,比如执行migrate之类的命令时
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') #原内容
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.product_settings')
  • 此时的项目目录大致如下
    image

本地开发测试期间,配置pycharm为开发所用settings

  • 修改如下图
    image
  • manage.py也需要修改,难免在本地会执行一些makemigrations
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') #原内容
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.dev_settings')
  • python console的设置
    image

我拆分的内容

  • 主要为数据库配置
    dev_settings.py:
from .base import *

DEBUG = True

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxxxx',
        'USER': 'xxxxxx',
        'PASSWORD': 'xxxxxxx',
        'HOST': '192.168.131.128',
        'PORT': 3306,
        'CONN_MAX_AGE': 5 * 60,
        'OPTIONS': {'charset': 'utf8mb4'}
    }
}

product_settings.py:

from .base import *

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxxxx',
        'USER': 'xxxxxxxx',
        'PASSWORD': 'xxxxxxxxxx',
        'HOST': 'xx.xx.xx.xx',
        'PORT': 3306,
        'CONN_MAX_AGE': 5 * 60,
        'OPTIONS': {'charset': 'utf8mb4'}
    }
}

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:8379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD":"xxxxxxxx",
        },
    }
}

posted @ 2021-10-22 17:56  lisicn  阅读(128)  评论(0编辑  收藏  举报