Me encontré con un comportamiento muy extraño del sistema de plantillas de Django. Tengo un archivo de plantilla, es decir test.html
, que incluye a sí misma recursivamente:Etiqueta de inclusión condicional en Django
{% include "test.html" %}
Por supuesto, dicha plantilla tiene ninguna posibilidad de ser prestados, ya que no hay ninguna condición de acabado. OK, vamos a tratar lo siguiente:
{% if test_false %}{% include "test.html" %}{% endif %},
donde test_false
es una variable pasada a la plantilla e igual a False
.
Uno espera que simplemente no va a incluir cualquier cosa, pero lo hace:
RuntimeError at /test/
maximum recursion depth exceeded while calling a Python object
Yo no lo entiendo. La etiqueta Incluir puede tomar argumentos del contexto actual, por lo que dudo que se ejecute antes que cualquier otra parte de la página. Entonces, ¿por qué ignora la etiqueta de condición?