Django 3.0拆分settings檔案
阿新 • • 發佈:2021-10-22
需求
隨著專案的發展,經常需要對專案進行開發測試,這時的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",
},
}
}