问题:
我有一个表单中的输入按钮,当它提交时应该将两个参数 search_val
和 i
重定向到 more_results()
函数(下面列出),但是当wsgi构建时我遇到类型错误 .
错误是: TypeError: more_results() takes exactly 2 arguments (1 given)
HTML:
<form action="{{ url_for('more_results', past_val=search_val, ind=i ) }}" method=post>
<input id='next_hutch' type=submit value="Get the next Hunch!" name='action'>
</form>
烧瓶功能:
@app.route('/results/more_<past_val>_hunches', methods=['POST'])
def more_results(past_val, ind):
if request.form["action"] == "Get the next Hunch!":
ind += 1
queried_resturants = hf.find_lunch(past_val) #method to generate a list
queried_resturants = queried_resturants[ind]
return render_template(
'show_entries.html',
queried_resturants=queried_resturants,
search_val=past_val,
i=ind
)
有关如何克服构建错误的任何想法?
我尝试过的:
Creating link to an url of Flask app in jinja2 template
使用url_for()的多个参数
Build error with variables and url_for in Flask
类似的构建错误
另外,该功能的目的是在有人点击"next page"按钮时遍历列表 . 我正在传递变量 i
所以我可以引用继续递增列表 . 是否有更好的烧瓶/ jinja 2方法?我似乎可以用来渲染页面,然后用 cycling_list.next()
重新渲染它 .
2 回答
您的路线未指定如何填写的不仅仅是一个
past_val
arg . Flask可以't magically create a URL that will pass two arguments if you don' t给它一个两参数模式 .通过为某些参数指定默认值,还可以创建支持可变数量参数的路由: