uganda tutorial template police jinja python html flask jinja2

python - tutorial - Incluir archivo html en plantilla Jinja2



police vs jinja uganda (2)

Estoy utilizando microframework Flask para mi servidor que utiliza plantillas de Jinja. Tengo parent 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.

the main.py:

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

El template.html simplificado:

<!DOCTYPE html> <html> <head> </head> <body> <div class="container"> {% block content %} {% endblock %} </div> </body> </html>

Y la magia está en child1.html:

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

En lugar de los comentarios

<!-- include content1.html -->

Tengo un montón de texto html. Y es muy difícil hacer un seguimiento de los cambios y no cometer algunos errores, que luego 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. El código anterior podría no funcionar correctamente, solo 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.