# Flaskでテンプレートを読み込む
Flaskには標準でJinja2というテンプレートエンジンが付いています。 templatesというフォルダを作り、そこに、htmlを置きます。
# フォルダ構成
フォルダ構成は以下のようになります。
flask/run.py
/templates/layout.html
/hello.html
# コード
# layout.html
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
{% block content %}
<!-- ここにメインコンテンツを書く -->
{% endblock %}
</body>
</html>
# hello.html
{% extends "layout.html" %}
{% block content %}
<h3>Hello</h3>
こんにちは。{{ name }}さん。
{% endblock %}
# run.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello():
name = "Hoge"
return render_template('hello.html', title='flask test', name=name)
if __name__ == "__main__":
app.run(debug=True)
# コード解説
# layout.html
共通テンプレートです。 フッターとかヘッダーとかをここに定義するといいと思います。
{% block content %}
<!-- ここにメインコンテンツを書く -->
{% endblock %}
通常のHTMLと異なる部分は上記部分のみです。
{% block content %}
と{% endblock %}
部分にコンテンツをインポートします。
# hello.html
コンテンツ部分です。
今回はこんにちは。さん。と表示させます。
{% extends "layout.html" %}
{% block content %}
<h3>Hello</h3>
こんにちは。{{ name }}さん。
{% endblock %}
{% extends "layout.html" %}
でlayout.htmlを継承しています。
# run.py
def hello():
name = "Hoge"
return render_template('hello.html', title='flask test', name=name)
return render_template('hello.html', title='flask test', name=name)
この部分でhello.htmlを呼び出しタイトルとnameの変数を渡しています。
他の部分の説明はFlaskでhello world