[python] Jinja2 템플릿에 HTML 파일을 어떻게 포함하나요?
Jinja 템플릿을 사용하는 내 서버에 Flask 마이크로 프레임 워크를 사용하고 있습니다.
나는 부모가 template.html
어떤 아이 템플릿을 호출 child1.html
하고 child2.html
,이 아이들 중 일부는 템플릿은 꽤 큰 HTML 파일이며, 어떻게 든 내 작품을 더 잘 명석 그들을 분할하고 싶습니다.
내 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()
단순화 template.html
:
<!DOCTYPE html>
<html>
<head></head>
<body>
<div class="container">
{% block content %}{% endblock %}
</div>
</body>
</html>
마법은 다음과 child1.html
같습니다.
{% extends 'template.html' %}
{% block content %}
{% if task == 'content1' %}
<!-- include content1.html -->
{% endif %}
{% if task == 'content2' %}
<!-- include content2.html -->
{% endif %}
{% endblock %}
댓글 대신 :
<!-- include content1.html -->
나는 많은 html 텍스트를 가지고 있으며 변경 사항을 추적하고 실수하지 않는 것이 매우 어렵습니다.
나는 content1.html
그것을 모두 작성 하는 대신에 로드하고 싶습니다 child1.html
.
나는 우연히 이 질문에 ,하지만 난 그것을 구현하는 문제가 있었다.
Jinja2에 더 나은 도구가있을 수 있다고 생각합니다.
참고 : 위의 코드는 제대로 작동하지 않을 수 있으며 문제를 설명하기 위해 작성했습니다.
답변
jinja2 {% include %}
지시문을 사용하십시오 .
{% extends 'template.html' %}
{% block content %}
{% if task == 'content1' %}
{% include 'content1.html' %}
{% endif %}
{% if task == 'content2' %}
{% include 'content2.html' %}
{% endif %}
{% endblock %}
여기에는 올바른 콘텐츠 파일의 콘텐츠가 포함됩니다.