一尘不染

获取Flask中复选框的值

flask

我想获取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

阅读 1488

收藏
2020-04-06

共1个答案

一尘不染

你并不需要使用getlist,只是get如果只有一个给定名称的输入,尽管它不应该的事。你显示的内容确实有效。这是一个简单的可运行示例:

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)
2020-04-06