5

多くの人がこの質問をしていることは知っていますが、テンプレート ディレクトリへのパスをハードコーディングしているにもかかわらず、Django にテンプレートを見つけさせることができないようです。

ここにsettings.pyがあります

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

TEMPLATE_DIRS = (
    "/Users/full/path/to/marketing_site/templates",
)

これは、views.py ファイルです。

def static (request, feature_page):

# this will get the appropriate feature page template.
template = loader.get_template('features/pricing.html')
c = RequestContext(request,{
})
return HttpResponse(template.render(c))

メイン フォルダー内には、templates フォルダーと app フォルダーがあります。以前はアプリを settings.py と同じフォルダーに配置していましたが、django 1.4 がデフォルトのファイル構造を変更したようです。

私のエラーは次のとおりです。

TemplateDoesNotExist at /features/pricing 

Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:
/Library/Python/2.7/site-packages/django/contrib/auth/templates/feature_pricing.html (File does not exist)

更新:
Web ページのログには、TEMPLATE_DIRS が () としてリストされています。

TEMPLATE_DIRS の settings.py ページに print ステートメントを配置すると、適切に TEMPLATE_DIRS の出力が得られます。

4

4 に答える 4

9

settings.py に追加の TEMPLATE_DIR を追加しました

:(

于 2012-07-11T05:28:16.377 に答える
5

パス変数には相対パスを設定することをお勧めします。次のように設定できます。

import os

PATH_PROJECT = os.path.realpath(os.path.dirname(__file__))

...

...

TEMPLATE_DIRS = (
    PATH_PROJECT + '/templates/'
)

また、Windows を使用していると仮定すると、次のことを試してみてください。

TEMPLATE_DIRS = (
"C:/Users/full/path/to/marketing_site/templates",
)
于 2012-07-10T22:36:50.547 に答える
1

ディレクトリ/Users/full/path/to/marketing_site/templatesが含まれていないか、ファイルが含まれていないに違いありません。features/Users/full/path/to/marketing_site/templates/featurespricing.html

あなたのコメントに基づいて、loader.get_template('feature_pricing.‌​html')を使用する代わりに、を呼び出しているようです'feature/pricing.html'

編集:私は前にこれに気付かなかった:

メイン フォルダー内には、templates フォルダーと app フォルダーがあります。以前はアプリを settings.py と同じフォルダーに配置していましたが、django 1.4 がデフォルトのファイル構造を変更したようです。

それが問題を引き起こしている可能性があります。1.4 Django 規則に一致するようにディレクトリ構造を変更します。プロジェクトを再作成し、関連する設定を新しく作成した settings.py にコピーして、すべてのファイルをコピーするだけです。

于 2012-07-10T21:46:41.233 に答える
1

プロジェクト パスを django.wsgi に追加してみてください

import os
import sys

paths = ('path/to/project/',
        'path/to/more /included/directories/',
    )

for path in paths:
    if path not in sys.path:
       sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
于 2012-07-10T23:14:14.513 に答える