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>

辞書型もいける。・・・出典参照