1. ホーム
  2. python

[解決済み] Flaskでチェックボックスの値を取得する

2022-02-14 03:14:13

質問内容

Flaskでチェックボックスの値を取得したいのですが、どうすればいいですか? 私は 似たような投稿 を出力して、それを使おうとしました。 request.form.getlist('match') で、リストなので [0] しかし、何か間違っているようです。これは正しい出力方法なのでしょうか、それとももっと良い方法があるのでしょうか?

<input type="checkbox" name="match" value="matchwithpairs" checked> Auto Match

if request.form.getlist('match')[0] == 'matchwithpairs':
    # do something

解決方法は?

を使用する必要はありません。 getlist のみです。 get は、指定した名前の入力が1つしかない場合、問題にはなりませんが あなたが示したものは動作します。 以下は、簡単な実行例です。

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        print(request.form.getlist('hello'))

    return '''<form method="post">
<input type="checkbox" name="hello" value="world" checked>
<input type="checkbox" name="hello" value="davidism" checked>
<input type="submit">
</form>'''

app.run()

両方のボックスにチェックを入れてフォームを送信すると、次のように表示されます。 ['world', 'davidism'] をターミナルに表示します。 なお、htmlフォームのメソッドは post になるように、データは request.form .


フィールドの実際の値や値のリストを知ることが役に立つ場合もありますが、あなたが気にしているのは、ボックスにチェックが入ったかどうかだけのようですね。 この場合、チェックボックスに一意な名前を付けて、値があるかどうかだけをチェックするのが一般的です。

<input type="checkbox" name="match-with-pairs"/>
<input type="checkbox" name="match-with-bears"/>

if request.form.get('match-with-pairs'):
    # match with pairs

if request.form.get('match-with-bears'):
    # match with bears (terrifying)