django1.4におけるSITE_ROOTの定義

djangoを使ってサイトを構築する場合、「settings.py」にて、プロジェクトのルートディレクトリのパスを定義して、そこから相対パスでテンプレートディレクトリを指定するテクニックがあります。ただし、django1.4にて同じことをやろうとする場合、「settings.py」の場所が変更されたので、ルートディレクトリの定義を変更する必要があります。

--- settings.py ---

import os
# django1.3まで
# SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

# django1.4
SITE_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))

この方法で定義しておくと、「SITE_ROOT」がきちんとプロジェクトのルートを指すようなり、ルート直下においた「templates」などは以下のように指定することができるようになります。

--- settings.py ---

TEMPLATE_DIRS = (
    os.path.join(SITE_ROOT, 'templates'),
)

※ 勿論django1.3の「SITE_ROOT = os.path.dirname(os.path.realpath(file))」で、「templates」等のディレクトリを「settings.py」と同じディレクトリにすれば問題なく動きます。ただ「locale」ディレクトリをプロジェクトルートに置きたかったので、「templates」ディレクトリ等も今まで通りの場所に置こうと思いました。

この記事が役に立った場合、シェアしていただけると励みになります!!