Używam mikro-frameworka Flask dla mojego serwera, który używa szablonów Jinja.
Mam template.html
szablony dla rodziców i dzieci o nazwie, child1.html
a child2.html
niektóre z tych szablonów dla dzieci są dość dużymi plikami HTML i chciałbym je jakoś podzielić, aby uzyskać lepszą przejrzystość w mojej pracy.
Zawartość mojego main.py
skryptu:
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()
Uproszczone template.html
:
<!DOCTYPE html>
<html>
<head></head>
<body>
<div class="container">
{% block content %}{% endblock %}
</div>
</body>
</html>
Magia tkwi w child1.html
:
{% extends 'template.html' %}
{% block content %}
{% if task == 'content1' %}
<!-- include content1.html -->
{% endif %}
{% if task == 'content2' %}
<!-- include content2.html -->
{% endif %}
{% endblock %}
Zamiast komentarzy:
<!-- include content1.html -->
Mam dużo tekstu HTML i bardzo trudno jest śledzić zmiany i nie popełniać błędów, które są wtedy dość trudne do znalezienia i poprawienia.
Chciałbym po prostu załadować, content1.html
zamiast pisać to wszystko child1.html
.
Natknąłem się na to pytanie , ale miałem problemy z jego wdrożeniem.
Myślę, że Jinja2 może mieć do tego lepsze narzędzie.
UWAGA: Powyższy kod może nie działać poprawnie, napisałem go tylko, aby zilustrować problem.