settings.pyでBASE_DIRを定義する

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です。