【问题标题】:propagating a value from one route to another in flask [duplicate]在烧瓶中将值从一条路线传播到另一条路线[重复]
【发布时间】:2017-01-31 20:10:33
【问题描述】:

所以, 我对烧瓶和前端编程很陌生..

我有一个表格:像这样

<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 表单中.. 我有两个字段..

已经设置了默认值的名称(文本框)

和选项列表

而且,我的意图是,当用户按下“提交”时,这两个字段都是 在后端收到

但打印语句显示..

POST ImmutableMultiDict([('movie', u'foobar')])

但我没有看到名称字段?

我该如何解决这个问题?

【问题讨论】:

  • 我不认为浏览器在请求中包含禁用字段。
  • @dirn:所以,我想在用户提交表单时传递此名称.. 有什么好的方法来捕获这个?
  • 如果需要可见,可以使用readonly。否则就把它隐藏起来。

标签: python flask


【解决方案1】:

可能是因为您在第一个 inputvalue 周围缺少引号。

同样禁用的输入也不会被传递,values of disabled inputs will not be submited?

【讨论】:

  • 我真的不确定我是否理解?
  • 第二行的value 属性缺少引号。
  • 但我如何在它周围加上引号 value = " {{ name }} " ?
  • 我做了&lt;input type="text" name="name" value="{{ name }}" disabled&gt;&lt;br&gt;&lt;br&gt;没工作:(
  • 啊..那么当用户提交表单时我如何传递值?
【解决方案2】:

您同时允许 GETPOST 请求,但您没有在代码中区分它们。如果您想在用户提交这些值时获取它们,那么您需要在该表单POSTs 时执行一些操作。可能是这样的:

@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() 编了一个模板名称,所以你可以用你实际调用的任何模板替换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 2019-06-24
    • 2013-06-21
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多