我环顾四周但似乎无法找到答案。我有一个带有单选按钮选项的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
答案 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))
您在提交广播选项时重定向到users
。users
需要您尚未提供的参数,即它是可更改的,这就是您收到此错误的原因。另外,您也没有使用从此行检索的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)