需求
随着项目的发展,经常需要对项目进行开发测试,这时的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')
- 此时的项目目录大致如下
本地开发测试期间,配置pycharm为开发所用settings
- 修改如下图
- manage.py也需要修改,难免在本地会执行一些
makemigrations
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') #原内容
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.dev_settings')
- python console的设置
我拆分的内容
- 主要为数据库配置
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",
},
}
}