2015-08-24 4 views
2

Я пытаюсь распечатать значение флажка в Flask, когда я нажал кнопку отправки.Флажок не получает значение флажка

app.py сниппет:

@app.route('/test2', methods=['GET', 'POST']) 
def test2(): 

    if request.method == "POST": 
     if request.form['submit'] == 'submit': 
      print(request.args.get('check')) 

    return render_template('test.html') 

HTML:

<div class="container"><br> 
    <form role="form" method="post"> 
    <input type="checkbox" name="check" value="test"> 
    <button type="submit" name="submit" value="submit">Submit</button> 
    </form> 
</div> 

Это возвращает 'Нет', когда я нажимаю кнопку отправки.

Я также попытался request.form.get()

@app.route('/test2', methods=['GET', 'POST']) 
def test2(): 

    if request.method == "POST": 
     if request.form['submit'] == 'submit': 
      print(request.form.get('check')) 

    return render_template('test.html') 

Это также возвращает 'Нет'.

ответ

11

При отправке HTML-формы флажки без отметки не отправляют никаких данных. На флаконе флажок не будет ключа в form, так как никакого значения не получено. Если вы хотите проверить, установлен ли один флажок (с уникальным именем), просто проверьте, есть ли его имя в form. Если вы хотите проверить, какие из нескольких флажков (с тем же именем) отмечены, вместо этого используйте getlist.

Один булевы:

<input type="checkbox" name="check"> 
checked = 'check' in request.form 

Несколько вариантов:

<input type="checkbox" name="check" value="1"> 
<input type="checkbox" name="check" value="2"> 
<input type="checkbox" name="check" value="3"> 
selected = request.form.getlist('check') 
any_selected = bool(selected) 
Смежные вопросы