使用烧瓶从选择标签中获取价值

Posted

技术标签:

【中文标题】使用烧瓶从选择标签中获取价值【英文标题】:Getting value from select tag using flask 【发布时间】:2015-11-08 06:44:06 【问题描述】:

我是 Flask 的新手,我无法从我的选择标签中获取值。我试过request.form['comp_select'],它返回一个错误的请求。但是,当我尝试使用request.form.get('comp_select') 时,我的返回页面返回一个空白列表“[]”。

我的html

<form class="form-inline" action=" url_for('test') ">
  <div class="form-group">
    <div class="input-group">
        <span class="input-group-addon">Please select</span>
            <select name="comp_select" class="selectpicker form-control">
              % for o in data %
              <option value=" o.name "> o.name </option>
              % endfor %                                              
            </select>
    </div>
    <button type="submit" class="btn btn-default">Go</button>
  </div>
</form>

我的 app.py:

@app.route("/test" , methods=['GET', 'POST'])
def test():
    select = request.form.get('comp_select')
    return(str(select)) # just to see what select is

如果我的帖子格式已关闭,请提前抱歉(也是 Stack Overflow 的新功能)。

【问题讨论】:

【参考方案1】:

从您提供的内容中很难确定,但我相信您需要将 method="POST" 添加到您的 &lt;form&gt; 元素中。

来自flask doc for the request object:

要访问表单数据(在 POST 或 PUT 请求中传输的数据),您可以使用 form 属性。 ...要访问在 URL (?key=value) 中提交的参数,您可以使用 args 属性。

因此,如果您通过 POST 提交表单,请使用 request.form.get()。如果您通过 GET 提交表单,请使用 request.args.get()

此应用会按照您希望的方式运行:

flask_app.py:

#!/usr/bin/env python
from flask import Flask, flash, redirect, render_template, \
     request, url_for

app = Flask(__name__)

@app.route('/')
def index():
    return render_template(
        'index.html',
        data=['name':'red', 'name':'green', 'name':'blue'])

@app.route("/test" , methods=['GET', 'POST'])
def test():
    select = request.form.get('comp_select')
    return(str(select)) # just to see what select is

if __name__=='__main__':
    app.run(debug=True)

模板/index.html

<form class="form-inline" method="POST" action=" url_for('test') ">
  <div class="form-group">
    <div class="input-group">
        <span class="input-group-addon">Please select</span>
            <select name="comp_select" class="selectpicker form-control">
              % for o in data %
              <option value=" o.name "> o.name </option>
              % endfor %
            </select>
    </div>
    <button type="submit" class="btn btn-default">Go</button>
  </div>
</form>

【讨论】:

我遇到了问题,获取select multiple 的所有值; get 只会返回第一个。答案给了here;可以使用request.getlist

以上是关于使用烧瓶从选择标签中获取价值的主要内容,如果未能解决你的问题,请参考以下文章

如何从选择中获取价值? [复制]

从日期选择器中获取价值

从 SwiftUI 颜色选择器中获取价值

从其他组件/架构问题中获取价值?

Swift 3 - 从核心数据中获取价值

从 JQUERY 日期选择器中获取价值