[解決済み】Django TemplateDoesNotExist?
質問
私のローカルマシンはUbuntu 8.10上でPython 2.5とNginxが動作しており、Djangoは最新の開発トランクからビルドされています。
URLをリクエストするたびに、スローされます。
TemplateDoesNotExist at /appname/path appname/template_name.html
Djangoはこれらのテンプレートをこの順番でロードしてみました。 * ローダ django.template.loaders.filesystem.function を使っています。 * ローダ django.template.loaders.app_directories.function を使う。
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
を探しているのでしょうか? /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html この場合は?奇妙なことに、このファイルはディスク上に存在しています。なぜ Django はそれを見つけることができないのでしょう?
私はUbuntu 9.04上のPython 2.6で同じアプリケーションをリモートサーバー上でこのような問題なく実行します。他の設定も同じです。
私のローカルマシンに何か設定ミスがあるのでしょうか、それともこのようなエラーを引き起こす可能性のあるものを調べる必要があるのでしょうか?
私の settings.py を指定しました。
SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
以下のファイルを探しているはずです。
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template1.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template2.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname2/template3.html
- ...
上記のファイルはすべてディスク上に存在します。
解決済み
試してみたところ、動作するようになりました。
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
不思議ですね。リモートサーバーでこんなことしなくても動くんですけどね。
どのように解決するのですか?
最初の解決策 :
これらの設定
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
は、Django が以下のテンプレートを見ることを意味します。
templates/
ディレクトリを作成します。
あなたのDjangoプロジェクトは、次の場所にあると仮定します。
/usr/lib/python2.5/site-packages/projectname/
を設定すると、django はテンプレートを
/usr/lib/python2.5/site-packages/projectname/templates/
そこで、その場合、テンプレートをこのような構造に移動させたいと思います。
/usr/lib/python2.5/site-packages/projectname/templates/template1.html
/usr/lib/python2.5/site-packages/projectname/templates/template2.html
/usr/lib/python2.5/site-packages/projectname/templates/template3.html
第二の解決策 :
それでもうまくいかない場合は、settings.pyでアプリをこのように設定していると仮定します。
INSTALLED_APPS = (
'appname1',
'appname2',
'appname3',
)
デフォルトでは、Django はテンプレートを以下の場所にロードします。
templates/
ディレクトリの下にインストールされます。そこで、このディレクトリ構造で、テンプレートを以下のように移動させたいと思います。
/usr/lib/python2.5/site-packages/projectname/appname1/templates/template1.html
/usr/lib/python2.5/site-packages/projectname/appname2/templates/template2.html
/usr/lib/python2.5/site-packages/projectname/appname3/templates/template3.html
SETTINGS_PATH
はデフォルトでは定義されていないかもしれません。 その場合は、(settings.pyで)定義する必要があります。
import os
SETTINGS_PATH = os.path.dirname(os.path.dirname(__file__))
関連
-
[解決済み] ImportError: 'django.utils' から名前 'six' をインポートできません。
-
[解決済み] Django における cleaned_data の用途は?
-
[解決済み] Django ランサーバー使用時にデータを印刷する方法
-
[解決済み] CSRFに失敗しました。CSRFトークンがないか不正確です
-
django.core.exceptions.ImproperlyConfigured: MySQLdb モジュールの読み込みに失敗しました。
-
django upstream が up からの応答ヘッダを読み込む際に接続を早々に切断してしまう。
-
django queryset values&values_list
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み】Djangoのvalues_listとvaluesの比較
-
[解決済み】Django Southでの後方移行について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Django: そのようなテーブルがない: django_session
-
[解決済み] Django: TemplateSyntaxError: 余りをパースできませんでした。
-
[解決済み] DISTINCT ON フィールドは、このデータベースバックエンドではサポートされていません。
-
[解決済み] CSRFに失敗しました。CSRFトークンがないか不正確です
-
django_filters のインポートがうまくいかない、 'django_filter' という名前のモジュールがない
-
[解決済み] 正確な検索のための QuerySet 値は、スライシングを使用して 1 つの結果に制限する必要があります。フィルタ・エラー
-
[解決済み] `SyntaxError: nonlocal 'topics_with_log_tag' のバインディングが見つからない` けど、バインディングはされている
-
[解決済み】Djangoで多対多のフィールドをオプションにするにはどうすればいいですか?
-
[解決済み】Djangoのテンプレートにコメントを入れる方法
-
[解決済み】Django の SECRET_KEY を変更した場合の影響について