How to include templates dynamically in Django using “include” tag

Refresh

December 2018

Views

8.4k time

18

I have 10 html files with the names 1.html, 2.html ..etc What I want is according to a variable, a certain file should be included in the template.

e.g.

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

Is this possible ? Cause the foo.id is not being translated before the includes tag works. As a result its giving a error. How can this issue be handled in a different way ? Should I create a custom template tag for this ?

1 answers

30

Вы можете сделать это с надстройкой фильтром и с утверждением .

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

Прежде всего построить template_name, которые состоят из foo.idв формате строки сцепляются с .html. Затем вы передаете его includeпомечать, сцепляются с путем к директории шаблона.