使用烧瓶从选择标签中获取价值
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"
添加到您的 <form>
元素中。
来自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
。以上是关于使用烧瓶从选择标签中获取价值的主要内容,如果未能解决你的问题,请参考以下文章