2012-10-01 15 views
16

1.html、2.htmlなどの名前の10個のhtmlファイルがあります。 変数に応じて、特定のファイルを含める必要がありますテンプレート。"include"タグを使用してDjangoにテンプレートを動的に含める方法

{% if foo.paid %} 
    {% include "foo/customization/{{ foo.id }}.html" %} 
{% endif %} 

これは可能ですか? includesタグが動作する前にfoo.idが翻訳されていないためです。その結果、エラーが発生します。この問題はどうやって別の方法で処理できますか? カスタムテンプレートタグを作成する必要がありますか?

答えて

26

add filterwith statementとすることができます。

{% if foo.paid %} 
    {% with template_name=foo.id|stringformat:"s"|add:".html" %} 
     {% include "foo/customization/"|add:template_name %} 
    {% endwith %} 
{% endif %} 

まず、.htmlと連結した文字列形式でfoo.idで構成さtemplate_nameを構築。次に、includeタグに渡し、テンプレートディレクトリのパスに連結します。

関連する問題