2012-10-01 12 views
16

Mam 10 plików html o nazwach 1.html, 2.html ..etc Czego chcę, zgodnie ze zmienną, pewien plik powinien być zawarty w szablon.Jak dynamicznie dodawać szablony do Django za pomocą znacznika "include"

np.

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

Czy to możliwe? Przyczyna, że ​​plik foo.id nie jest tłumaczony, zanim działa znacznik include. W rezultacie daje błąd. W jaki sposób można rozwiązać ten problem w inny sposób? Czy powinienem utworzyć niestandardowy znacznik szablonu?

Odpowiedz

26

Możesz to zrobić z add filter i with statement.

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

Najpierw trzeba zbudować template_name, które składają się z foo.id w formacie ciągu połączonego z .html. Następnie przekazujesz go do zmiennej include, połączonej ze ścieżką do katalogu szablonów.

Powiązane problemy