お世話になっております.
Flask と jinja2 を使って次のコードを書きました. (動作の説明は以下. )
app.py
1from flask import Flask, render_template, request 2 3app = Flask(__name__) 4 5@app.route('/') 6def index(): 7 return render_template( 8 'index.html', 9 year=2022 10 ) 11 12@app.route('/<year>', methods=['POST']) 13def update(year): 14 year = request.form["year"] 15 return render_template( 16 'index.html', 17 year=year 18 ) 19 20if __name__ == '__main__': 21 app.run(debug=True, host='localhost', port=5050)
index.html
1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Update Year</title> 5 </head> 6 <body> 7 <form method='POST' action="{{ url_for('update', year=year) }}"> 8 <select name="year"> 9 <option value="{{ year }}">{{ year }}</option> 10 {% for i in range(2020, 2051) %} 11 <option value="{{ i }}">{{ i }}</option> 12 {% endfor %} 13 </select> 14 <button type="submit">Update</button> 15 </form> 16 <br> 17 We have {{ year }} now. 18 </body> 19</html>
動作説明:
- 表示される画面は
year
を選択できるプルダウンメニューと, それを更新できるUpdate
ボタンからなる. - はじめ
/
にいてプルダウンメニューの初期値はyear=2022
. そこから例えば2039
を選択してUpdate
を押す. /2022
に遷移してプルダウンメニューの初期値はyear=2039
となる. 今度は2025
を選択してUpdate
を押す./2039
に遷移してプルダウンメニューの初期値はyear=2025
となる.
問題は例えば3においてアドレス "/2022" と画面に表示される値 2039 が一致しないことです.
これらを一致させるにはどうしたらよいのでしょうか.
問題の原因は <form method='POST' action="{{ url_for('update', year=year) }}">
の部分なのですが, この year
を後から代入できるようにする仕組みが分かりません.
何卒宜しくお願い致します.

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。