所以, 我对烧瓶和前端编程很新。
我有一个表格:像这样
<form action="{{ url_for('search') }}" method="post">
Showing values for: <input type="text" name="name" value={{ name }} disabled><br><br>
<select name="movie" width="300px">
{% for movie in movie_list %}
<option value="{{ movie }}" SELECTED>{{ movie }}</option>
{% endfor %}
</select>
<input type="submit" value="Recommend!!">
</form>
这就是我在烧瓶中捕获的方式
@app.route('/web/search', methods=['post','get'])
def search():
print request.method, request.form
所以,你可以看到,在html格式中..我有两个字段..
名称(文本框)已设置默认值
和option_list
而且,我的意图是,当用户按下“提交”时,这两个字段都是 收到后端
但是print语句显示..
POST ImmutableMultiDict([('movie', u'foobar')])
但我没看到名字字段?
我该如何解决这个问题?
答案 0 :(得分:4)
可能是因为您在第value
位input
附近缺少引号。
答案 1 :(得分:2)
您同时允许GET
和POST
个请求,但您不能在代码中区分它们。如果您想在用户提交这些值时获取这些值,那么您需要在表单POST
时执行某些操作。也许是这样的事情:
@app.route('/web/search/', methods=['POST','GET'])
def search():
if request.method == 'POST':
print request.method, request.form
# do some stuff
return redirect(url_for('search_results', results=results))
else:
return render_template('my_template.html')
然后,在if
语句中,您可以使用变量执行操作。在我想象中的情况下,我将用户发送到另一个网页,您可以在其中显示搜索结果。我刚刚为render_template()
制作了一个模板名称,因此您可以替换实际调用的模板。