2012-10-01 11 views
16

Ho 10 file html con i nomi 1.html, 2.html ..etc Quello che voglio è secondo una variabile, un certo file dovrebbe essere incluso in Il template.Come includere dinamicamente i modelli in Django usando il tag "include"

ad es.

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

È possibile? Causa che foo.id non viene tradotto prima che il tag include funzioni. Di conseguenza ha dato un errore. In che modo questo problema può essere gestito in un modo diverso? Devo creare un tag modello personalizzato per questo?

risposta

26

È possibile farlo con add filter e with statement.

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

Per prima cosa è costruire una template_name, che consistono di foo.id in formato stringa concatenata con .html. Quindi lo si passa al tag include, concatenato con il percorso della directory del modello.

Problemi correlati