Djangoのアプリケーションをローカルでrunserverで動かす場合は、相対パスでテンプレートディレクトリ等を指定しても問題ないのだが、Apache経由等で動作させたりすると、カレントディレクトリの関係上うまくいかないことが多い。
settings.pyでBASE_DIRを定義するのがスマートなようだ。
- settings.pyの最初のほうに以下を追加
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
- SQLiteのDBファイルの設定例
DATABASE_NAME = os.path.join(BASE_DIR, 'data/dbfile')
各アプリケーションフォルダの下にあるtemplatesフォルダは特に設定なしでも認識されているが、プロジェクトフォルダ直下に作った場合は認識されなかった。テンプレートを一つのフォルダにまとめたかったので、TEMPLATE_DIRSの設定を行った。
- テンプレートディレクトリの設定例
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
settings.pyを普通にimportすれば他のソースファイルでも使えるので、何かと便利。
from django.conf import settings
ちなみにDjangoのバージョンは0.96です。