在烧瓶中将值从一个路径传播到另一个路径

时间:2016-09-23 04:40:57

标签: python flask

所以,   我对烧瓶和前端编程很新。

我有一个表格:像这样

<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')])

但我没看到名字字段?

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

可能是因为您在第valueinput附近缺少引号。

也禁用了已禁用的输入,values of disabled inputs will not be submited?

答案 1 :(得分:2)

您同时允许GETPOST个请求,但您不能在代码中区分它们。如果您想在用户提交这些值时获取这些值,那么您需要在表单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()制作了一个模板名称,因此您可以替换实际调用的模板。