Flask の request オブジェクトでフォームデータを取得する
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' が入る。



