2012-10-01 10 views
16

10 html dosyaları 1.html, 2.html ..etc var. İstediğim bir değişkene göre, belirli bir dosya şablon."include" etiketini kullanarak Django'da dinamik olarak şablonlar nasıl eklenir?

örn.

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

Bu mümkün mü? Çünkü foo.id, etiketler işlenmeden önce çevrilmiyor. Sonuç olarak bir hata veriyor. Bu konu nasıl farklı bir şekilde ele alınabilir? Bunun için özel bir şablon etiketi oluşturmalı mıyım?

cevap

26

add filter ve with statement ile yapabilirsiniz.

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

Önce .html ile birleştirilmiş dize biçiminde foo.id oluşan bir template_name, kurmak. Ardından, şablon dizininin yolu ile birleştirilmiş include etiketine iletirsiniz.