質問のコメントから、urlconfigではなくDjangoのテンプレートに問題があるようです。Djangoテンプレートの仕組みは次のとおりです。あなたの中で、Djangoがテンプレートを探すすべてのディレクトリのタプルを指定するsettings.py
変数を定義します。TEMPLATES_DIRS
次のものがあると仮定しますTEMPLATES_DIRS
。
TEMPLATES_DIRS = (
'/absolute/path/to/foo',
'/absolute/path/to/bar',
)
次に、テンプレートを探す場合base.html
、Djangoは次の場所でテンプレートを探し、見つかった場合は最初の場所を使用します。
/absolute/path/to/foo/base.html
/absolute/path/to/bar/base.html
あなたの場合、テンプレートをDjangoのプロジェクトフォルダーとアプリのフォルダーの両方に保存するとおっしゃいました。その場合、両方のフォルダが次のTEMPLATES_DIRS
ように定義されていることを確認する必要があります。
TEMPLATES_DIRS = (
'/absolute/path/to/project/templates',
'/absolute/path/to/app/templates',
)
base.html
次に、あなたの場合、Djangoはとの両方を見つけることができますindex.html
。物事を簡単にするために、プロジェクトを別の場所に簡単に移動できるように、プロジェクトパスへの絶対パスを格納するをPROJECT_PATH
で定義できます。settings.py
これがあなたの問題かもしれないところだと思います。Django> = 1.4では、次のプロジェクト構造があります。
/project <= this should be your PROJECT_PATH
/project <= instead of this
templates/
base.html
settings.py
/recipe
templates/
index.html
models.py
それを念頭に置いて、次のようなものを使用してみてください。
PROJECT_PATH = os.path.abspath(os.path.join(__file__, '..', '..'))
PROJECT_NAME = os.path.basename(PROJECT_PATH)
TEMPLATES_DIRS = (
os.path.join(PROJECT_PATH, PROJECT_NAME, 'templates'),
os.path.join(PROJECT_PATH, 'recipe', 'templates')
)
上記では、PROJECT_PATHはプロジェクトの絶対パスを計算します。settings.py
あなたがにいると想像してください/some/path/project/project/settings.py
。次に、次のようにプロジェクトパスを計算します。
>>> # settings.py
>>> print __file__
/some/path/project/project/settings.py
>>> print os.path.join(__file__, '..', '..')
/some/path/project/project/settings.py/../../
>>> # now abspath normalizes the path two levels up
>>> print os.path.abspath(os.path.join(__file__, '..', '..'))
/some/path/project
>>> # now you figure out the project name so that you can get the project templates folder
>>> print os.path.basename(os.path.abspath(os.path.join(__file__, '..', '..')))
project
>>> print os.path.join(PROJECT_PATH, PROJECT_NAME, 'templates')
/some/path/project/project/templates
>>> print os.path.join(PROJECT_PATH, 'recipe', 'templates')
/some/path/project/recipe/templates