将HTML单选按钮选项附加到Python Flask URL

时间:2017-08-23 17:39:02

标签: python html flask

我环顾四周但似乎无法找到答案。我有一个带有单选按钮选项的html表单。我根据html页面上的用户输入发布结果时,尝试将它们附加到烧录网址。

这是我的html页面:

<form class="form-search" id="formdata" action="{{url_for('users')}}" method="post">
    <label><font size="4">Select option:</font></label>
    <div class="labeltext btn-group" data-toggle="buttons">
       <label class="btn btn-primary active">
          <input type="radio" name="radioOptions" id="option1" value="Option1" checked> Option1 </label>
       <label class="btn btn-primary">
          <input type="radio" name="radioOptions" id="Option2" value="Option2"> Option2 </label>
    </div>
</form>

My Flask View:

@app.route('/users/<selectOption>', methods=['GET', 'POST'])
def users(selectOption):
    if request.method == 'POST':
      radioOptions = request.form['radioOptions']
     return redirect (url_for('users', selectOption=selectOption))
return render_template('users.html')

我以错误

结束
  

TypeError:users()只取1个参数(0给定)

不确定我的结局出了什么问题。我试图让我的网址看起来如下:

localhost:8080 / users?radioOptions = Option1

1 个答案:

答案 0 :(得分:0)

TypeError: users() takes exactly 1 argument (0 given)

您得到的上述错误解释了这一切。在以下代码中:

if request.method == 'POST':
      radioOptions = request.form['radioOptions']
     return redirect (url_for('users', selectOption=selectOption))  

您在提交广播选项时重定向到usersusers需要您尚未提供的参数,即它是可更改的,这就是您收到此错误的原因。另外,您也没有使用从此行检索的radioOptions值

selectOption = request.form['radioOptions']  #I have changed radioOptions to selectOption

正确而清晰的方法是定义另一个函数,该函数呈现模板并在重定向调用中调用它,如下所示:

@app.route('/users', methods=['GET', 'POST'])
def users():
    if request.method == 'POST':
      selectOption = request.form['radioOptions']
     return redirect (url_for('call_selected', selectOption=selectOption))
    return render_template('users.html')


@app.route('/<selectOption>', methods=['GET', 'POST'])
def call_selected(selectOption):
    return render_template(selectOption)