Incluir archivo html en la plantilla de Jinja2

Estoy usando microframework Flask para mi servidor que usa plantillas Jinja. Tengo padre template.html y algunos childs child1.html, child2.html. Algunos de estos niños son archivos html bastante grandes y me gustaría dividirlos de alguna manera para una mejor lucidez sobre mi trabajo.

el main.py:

from flask import Flask, request, render_template app = Flask(__name__) @app.route('/') @app.route('/') def home(task=''): return render_template('child1.html', task=task) app.run() 

El template.html simplificado:

      
{% block content %} {% endblock %}

Y la magia está en child1.html:

 {% extends 'template.html' %} {% block content %} {% if task == 'content1' %}  {% endif %} {% if task == 'content2' %}  {% endif %} {% endblock %} 

En lugar de los comentarios.

  

Tengo un montón de texto html. Y es muy difícil hacer un seguimiento de los cambios y no cometer algunos errores, que son bastante difíciles de encontrar y corregir. Así que me gustaría simplemente cargar el content1.html en lugar de escribirlo todo en child1.html. Me encontré con esta pregunta Incluir otro archivo HTML en un archivo HTML , pero tuve problemas para implementarlo. Creo que Jinja2 podría tener una mejor herramienta para eso.

Nota. Es posible que el código anterior no funcione correctamente, simplemente lo escribí para ilustrar el problema.

Use la directiva jinja2 {% include %} .

 {% extends 'template.html' %} {% block content %} {% if task == 'content1' %} {% include 'content1.html' %} {% endif %} {% if task == 'content2' %} {% include 'content2.html' %} {% endif %} {% endblock %} 

Esto incluirá el contenido del archivo de contenido correcto.

Puede utilizar la statement de inclusión .