FlaskからWEBへ情報(値、リストなど)を渡して表示
出典
↑わかりやすい。
要は・・・Flask側から、
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
title = 'world'
framework = 'Flask'
return render_template('index.html', title=title, framework=framework)
if __name__ == '__main__':
app.run()
という感じで変数を返し、HTML側では、
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Hello {{ title }}</title>
</head>
<body>
<h1>Hello {{ title }}</h1>
<p>{{ framework }}でHTMLファイルを読み込みことに成功しました。</p>
</body>
</html>
のように{{ 変数名 }}で表示できる。
リストの場合、
@app.route('/')
def index():
arr1d = ['愛媛県', '高知県', '徳島県', '香川県']
return render_template('index.html', arr=arr1d)
とすると、
<ul>
<li>{{ arr[0] }}</li>
<li>{{ arr[1] }}</li>
<li>{{ arr[2] }}</li>
<li>{{ arr[3] }}</li>
</ul>
といった具合でリストから値を切り出す。 ↓こういう書き方もできるとな。forループ・・・
<ul>
{% for i in arr %}
<li>{{ i }}</li>
{% endfor %}
</ul>
リストのリスト(二次元配列)ならば・・・
@app.route('/')
def index():
arr_2d = [['a', 'b', 'c', 'd'], ['A', 'B']]
return render_template('index.html', arr=arr_2d)
ならば、
<body>
<h1>二次元配列を表示させる</h1>
<ul>
<li>{{ arr[0][0] }}</li>
<li>{{ arr[0][1] }}</li>
<li>{{ arr[0][2] }}</li>
<li>{{ arr[0][3] }}</li>
<li>{{ arr[1][0] }}</li>
<li>{{ arr[1][1] }}</li>
</ul>
</body>
と、ベタ表示。forループだと・・・
<ul>
{% for i in arr %}
{% for j in i %}
<li>{{ j }}</li>
{% endfor %}
{% endfor %}
</ul>
辞書型もいける。・・・出典参照