2019-07-04に投稿

Flaskでテンプレートを読み込む

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

コンテンツ部分です。
今回はこんにちは。{{ name }}さん。と表示させます。

{% 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

Originally published at oneminutepython.com

aocory

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント