使用多個設定
Django 預設專案佈局建立一個 settings.py
。這通常很有用,可以像這樣拆分它:
myprojectroot/
myproject/
__init__.py
settings/
__init__.py
base.py
dev.py
prod.py
tests.py
這使你可以根據你是在開發,生產,測試還是其他任何方式使用不同的設定。
從預設佈局移動到此佈局時,原始 settings.py
變為 settings/base.py
。當每個其他子模組將通過 from .base import *
開始子類化settings/base.py
。例如,這是 settings/dev.py
的樣子:
# -*- coding: utf-8 -*-
from .base import * # noqa
DEBUG = True
INSTALLED_APPS.extend([
'debug_toolbar',
])
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
INTERNAL_IPS = ['192.168.0.51', '192.168.0.69']
備選方案#1
要使 django-admin
命令正常工作,你必須設定 DJANGO_SETTINGS_MODULE
環境變數(預設為 myproject.settings
)。在開發中,你將其設定為 myproject.settings.dev
。在製作中,你將其設定為 myproject.settings.prod
。如果你使用 virtualenv,最好在你的 postactivate
指令碼中設定它:
#!/bin/sh
export PYTHONPATH="/home/me/django_projects/myproject:$VIRTUAL_ENV/lib/python3.4"
export DJANGO_SETTINGS_MODULE="myproject.settings.dev"
如果你想使用 DJANGO_SETTINGS_MODULE
未指向的設定模組一次,你可以使用 django-admin
的 --settings
選項:
django-admin test --settings=myproject.settings.tests
備選方案#2
如果你想讓 DJANGO_SETTINGS_MODULE
保持其預設配置(myproject.settings
),你可以通過將匯入放在你的 __init__.py
檔案中來告訴 settings
模組載入哪個配置。
在上面的例子中,通過將 __init__.py
設定為:可以實現相同的結果:
from .dev import *