お世話になっております.
Flask と jinja2 を使って次のコードを書きました. (動作の説明は以下. )
app.py
from flask import Flask, render_template, request app = Flask(__name__) @app.route('/') def index(): return render_template( 'index.html', year=2022 ) @app.route('/<year>', methods=['POST']) def update(year): year = request.form["year"] return render_template( 'index.html', year=year ) if __name__ == '__main__': app.run(debug=True, host='localhost', port=5050)
index.html
<!DOCTYPE html> <html> <head> <title>Update Year</title> </head> <body> <form method='POST' action="{{ url_for('update', year=year) }}"> <select name="year"> <option value="{{ year }}">{{ year }}</option> {% for i in range(2020, 2051) %} <option value="{{ i }}">{{ i }}</option> {% endfor %} </select> <button type="submit">Update</button> </form> <br> We have {{ year }} now. </body> </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 を後から代入できるようにする仕組みが分かりません.
何卒宜しくお願い致します.

0 コメント