SO answer: https://stackoverflow.com/a/6217194/493211で説明されているテンプレートタグを、Django 1.4.3 (Python 2.7.2) を使用するプロジェクトで使用しようとしています。
私はそれを次のように適応させました:
from django import template
register = template.Library()
@register.filter
def template_exists(template_name):
try:
template.loader.get_template(template_name)
return True
except template.TemplateDoesNotExist:
return False
別のテンプレートでこのように使用できるように:
{% if 'profile/header.html'|template_exists %}
{% include 'profile/header.html' %}
{% else %}
{% include 'common/header.html' %}
{% endif %}
このようにして、INSTALLED_APPS でアプリの順序を変更するなどの解決策を使用することを回避できたはずです。
しかし、うまくいきません。テンプレートが存在しない場合、スタック/コンソール内で例外が発生しますが、get_template(..)
(このステートメント内から) に伝播されないため、愚かなAPI には伝播されません。したがって、これはレンダリング中に私の顔に爆発します。スタックトレースをペーストビンにアップロードしました
これは Django の望ましい動作ですか?
このままバカなことをするのはやめました。しかし、私の疑問は残ります。