Flask ではリクエストに関する情報を request オブジェクトから取得できる。フォームから送信されたデータを受け取るには、request.form を使う。
request オブジェクトのインポート
from flask import Flask, request app = Flask(__name__)
request はグローバルオブジェクトのように見えるが、実際にはスレッドローカルな変数であり、リクエストごとに異なる値を持つ。
フォームデータの取得
HTML フォームから POST で送信されたデータは request.form で取得する。
<form method="POST" action="/login"> <input type="text" name="username"> <input type="password" name="password"> <button type="submit">Login</button> </form>
@app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] return f'Welcome, {username}!' return render_template('login.html')
request.form は辞書ライクなオブジェクトで、name 属性の値をキーとしてアクセスする。
キーが存在しない場合の対処
存在しないキーにアクセスすると KeyError が発生する。get メソッドを使えばデフォルト値を返せる。
username = request.form.get('username', '')
クエリパラメータの取得
GET リクエストの URL パラメータ(?key=value 形式)は request.args で取得する。
@app.route('/search') def search(): q = request.args.get('q', '') return f'Searching for: {q}'
/search?q=flask にアクセスすると、q に 'flask' が入る。