2017-06-17 47 views
1

我試圖從複選框中獲取值的列表。使用燒瓶通過python獲取複選框中的值列表

我發現了一個看起來可以解決我的問題的帖子(How to get if checkbox is checked on flask),但是,我仍在繼續收到此錯誤:錯誤的請求瀏覽器(或代理)發送了此服務器無法理解的請求。

我會發布我的整個代碼塊放在上下文中,但沒有添加複選框,它工作正常。事實上,我有一個下拉菜單相同的選項,它工作正常。

請注意,雖然我在python中的定期編碼,我是一個初學者html和瓶。

   <form action='/user_rec' method='POST' id='submitform'> 
       <input type='text', placeholder='user id' name='user_input'> 
       <button type="submit" class="btn btn-success">Recommend</button> 
       <br><br> 
       <h2>Other Options</h2> 
       <h5>Best Number of Players</h5> 
       <div class="checkbox"> 
        <label><input type="checkbox" name="check" value="1">1</label> 
       </div> 
       <div class="checkbox"> 
        <label><input type="checkbox" name="check" value="2">2</label> 
       </div> 
       <div class="checkbox"> 
        <label><input type="checkbox" name="check" value="3">3</label> 
       </div> 
       <div class="checkbox"> 
        <label><input type="checkbox" name="check" value="4">4</label> 
       </div> 
       <div class="checkbox"> 
        <label><input type="checkbox" name="check" value="5">5+</label> 
       </div> 
       <h5>Minimum Play Time (minutes)</h5> 
       <input type="text", placeholder='0' name='min_time'> 
       <br><br> 
       <h5>Maximum Play Time (minutes)</h5> 
       <input type="text", placeholder='500000' name='max_time'> 
       </form> 

和我的Python代碼:

@app.route('/user_rec', methods=['POST']) 
def button1(): 
    user_name = (request.form['user_input']) 
    best_num_player = (request.form['best_num_player']) 
    min_time = (request.form['min_time']) 
    max_time = (request.form['max_time']) 
    players = request.form.getlist('check') 
+0

它可能是你的代碼的其他部分。爲什麼不顯示完整的Python代碼。 –

回答

3

我覺得有兩個問題與您的代碼:

  1. 'best_num_player'是不是在形式字典的關鍵。
  2. 發佈後您沒有返回重定向。

下面是一個app.py示例,您可以嘗試。 (我假設你命名模板index.html

from flask import Flask, render_template, redirect, request 

app = Flask(__name__) 

@app.route('/') 
def index(): 
    return render_template('index.html') 

@app.route('/user_rec', methods=['POST']) 
def user_rec(): 
    user_name = request.form.get('user_input') 
    min_time = request.form.get('min_time') 
    max_time = request.form.get('max_time') 
    players = request.form.getlist('check') 
    print(user_name, min_time, max_time, players) 
    return redirect('/') 

if __name__ == '__main__': 
    app.run(debug=True) 
+0

我應該包括我的整個裝飾器。我在自己的代碼中包含了一個return語句,但是,您發現我的錯誤。我沒有刪除導致我之前建立的best_num_player變量的請求,該請求拋出了錯誤。 – Jomonsugi