0

私はdjangoの初心者で、小さなアプリケーションを使って学習しています。views.pyに、存在しないテンプレートファイル(.html)を意図的に含めました。

t = get_template('current_datetimeP.html')

でsetting.pyTEMPLATE_DIRS=( "D:/ Django_Code / mysite / templates /"、)

/time/でこのエラーTemplateDoesNotExistが発生します

Djangoはこれらのテンプレートを次の順序でロードしようとしました:ローダーdjango.template.loaders.filesystem.Loaderの使用: D:\ Django_Code \ mysite \ templates \ current_datetimeP.html(ファイルは存在しません)

私はsettings.pyにD:\ Django_Code \ mysite \ templates \を含めたので、Djangoがそこに潜んでいるのは問題ありませんが、フォローするのはどうですか?

私もこれを手に入れます

ローダーdjango.template.loaders.app_directories.Loaderの使用: C:\ Python27 \ lib \ site-packages \ django \ contrib \ auth \ templates \ current_datetimeP.html(ファイルは存在しません)

Djangoがここを調べている理由* C:\ Python27 \ lib \ site-packages \ django \ contrib \ auth \templates*。テンプレートを検索するデフォルトの場所ですか?

もう1つ、Djangoが上記のディレクトリを調べていることは明らかです。アプリケーションディレクトリに置く代わりに、そこにテンプレートファイルを置くことができますか?(それは良い習慣ではありませんが)?

4

2 に答える 2

2

テンプレートの読み込みは、settings.pyのTEMPLATE_LOADERS設定によって制御されます。これは通常、次のようになります。

TEMPLATE_LOADERS = (
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.filesystem.Loader',
)

アプリディレクトリローダーは、設定のINSTALLED_APPSにリストされているアプリのいずれかの「templates」フォルダーでテンプレートを検索します。

ファイルシステムローダーは、設定ファイルのTEMPLATE_DIRSの下にリストされている完全修飾ディレクトリパス名からテンプレートをロードしようとします。

ファイルシステムローダーを優先する場合は、TEMPLATE_LOADERS設定でアプリディレクトリローダーの前に配置します。アプリディレクトリの読み込みをオフにする場合は、#でコメントアウトします(またはタプルから削除します)。

于 2012-10-11T10:31:13.393 に答える
0

settings.pyの場所で作成されたテンプレートパスを使用してみてください

import os
DIRNAME = os.path.dirname(__file__)
TEMPLATE_DIRS = (
    os.path.join(DIRNAME, "templates"),
)


TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
)
于 2012-10-11T10:49:35.320 に答える