# 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