Jinja2のさらなる使い方。
Jinja2を使うと、辞書型、リスト型からの出力することができます。
また、文字列をフィルターに通すことで、文字列を処理することもできます。

Flaskのテンプレートのフィルター機能の利用、フィルター一覧 - Tech Life
Flaskのテンプレートは、フィルターという機能がある。 フィルターというのは、テンプレート上で値を変換したい場合に用いられる。 下記に、フィルターの使い方・実装方法とフィルター一覧を記載する テンプレートのフィルターの …
if文、for文も使えます。
{% if user %}
Hello, {{ user }}!
{% else %}
Hello, Stranger!
{% endif %}
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>
また、マクロなるもの(よく使用されるイディオムを関数として再利用可能な形にしたもの)を使って色々加工もできるっぽいですよ~。
hello.pyはこんな感じ
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
alist = ['a', 'b', 'c']
return render_template('index.html', comments=alist)
@app.route('/user')
def user():
alist = ['d', 'e', 'f']
return render_template('user.html', comments=alist)
if __name__ == '__main__':
app.run(debug=True)
user.htmlをこんな感じに書き換えて
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Konnakanji2</title>
</head>
<body>
{% import 'index.html' as macros %}
<ul>
{% for comment in comments %}
{{ macros.render_comment(comment) }}
{% endfor %}
</ul>
</body>
</html>
http://127.0.0.1:5000/userにアクセスするとd,e,fがリスト化されてます。
すげ~~~便利!!!
extendsっていう機能もあって、htmlの構造を丸々コピーできるらしいっす。
base.htmlはこんな感じ
<!DOCTYPE html>
<html lang="ja">
<head>
{% block head %}
<title>{% block title %}{% endblock %} - My Application</title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
index.htmlはこんな感じ
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<style>
</style>
{% endblock %}
{% block body %}
<h1>Hello, World!</h1>
{% endblock %}
extendsはbase.htmlの内容を引っ張ってきています。
{{ super() }}は親テンプレートのブロック内の内容を出力する関数です。
もし全てのtemplateに利用するならば includeなるものを使えるらしい
{% include 'index.html' %}

Amazon | Flask Web Development: Developing Web Applications with Python | Grinberg, Miguel | Software Development
Amazon配送商品ならFlask Web Development: Developing Web Applications with Pythonが通常配送無料。更にAmazonならポイント還元本が多数。Grinberg, Miguel作品ほか、お急ぎ便対象商品は当日お届けも可能。
前回の記事はこちら
次回の記事はこちら
コメント
[…] Flask Web Development P24~25Jinja2のさらなる使い方。Jinja2を使うと、辞書型、リス… FlaskPython FlaskPythonWeb application スポンサーリンク シェアする […]