Ich verwende Flask Microframework für meinen Server, der Jinja Vorlagen verwendet. Ich habe Eltern template.html und einige childs child1.html, child2.html. Einige dieser Kinder sind ziemlich große HTML-Dateien und ich möchte sie irgendwie für bessere Klarheit über meine Arbeit aufteilen.Include HTML-Datei in Jinja2 Vorlage
die 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()
Das vereinfachte template.html:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="container">
{% block content %}
{% endblock %}
</div>
</body>
</html>
Und die Magie in child1.html ist:
{% extends 'template.html' %}
{% block content %}
{% if task == 'content1' %}
<!-- include content1.html -->
{% endif %}
{% if task == 'content2' %}
<!-- include content2.html -->
{% endif %}
{% endblock %}
Anstelle der Kommentare
<!-- include content1.html -->
Ich habe eine Menge HTML-Text. Und es ist sehr schwer, Veränderungen im Auge zu behalten und keine Fehler zu machen, die dann schwer zu finden und zu korrigieren sind. Also möchte ich nur die content1.html laden, anstatt alles in child1.html zu schreiben. Ich bin auf diese Frage Include another HTML file in a HTML file gestoßen, aber ich hatte Probleme, es zu implementieren. Ich denke, Jinja2 könnte dafür ein besseres Werkzeug haben.
Hinweis. Der obige Code funktioniert möglicherweise nicht richtig, ich habe ihn einfach geschrieben, um das Problem zu veranschaulichen.
Vielen Dank. Ich werde diese Frage als die eine markieren, die ich akzeptiere, weil es das Beispiel zeigt, wie man es benutzt (obwohl es in diesem Fall ziemlich einfach ist.) – quapka