Django: construct value of {% include %} tag dynamically?

后端 未结 3 1046
傲寒
傲寒 2021-02-18 13:37

I\'d like to use an {% include page.html %} tag in my Django template, and construct the value of page.html dynamically.

Is there any way to do

相关标签:
3条回答
  • 2021-02-18 13:55

    I think that goliney provided a better answer here

    In summary:

    You can combine django's built-in 'with' template tag to assign a dynamically constructed template name to a variable and the 'add' filter and to dynamically construct a template name.

    For example:

     {% with template_name='page_'|add:mode|add:".html" %}
         {% include ""|add:template_name %}
     {% endwith %}
    
    0 讨论(0)
  • 2021-02-18 13:57

    You can concatenate plain strings and variables right in your templates using with tag and add filter, see this SO answer.

    0 讨论(0)
  • 2021-02-18 14:12

    From the docs:

    The template name can either be a variable or a hard-coded (quoted) string, in either single or double quotes.

    So construct a variable in your view and pass it to your template via the context, say as 'modeTemplate': "page_"+mode+".html". Then do:

    {% include modeTemplate %}
    

    Assuming 'mode' is a python variable in your view code.

    0 讨论(0)
提交回复
热议问题