我的问题是使用给定的代码:
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def hello():
return str(request.values.get("param", "None"))
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
我访问:
http://localhost:5000/?param=a¶m=bbb
Run Code Online (Sandbox Code Playgroud)
我应该期待除了Flask之外的['a','bbb']的输出似乎只接受第一个参数并忽略其余参数.
这是Flask的限制吗?还是设计?
我正在使用Flask和MongoDB.我试图将request.form的内容转换为适合通过PyMongo保存的内容.似乎应该经常出现一些现成的解决方案.
那么Flask给我的是:
ImmutableMultiDict([('default', u''), ('required': u'on'), ('name', u'short_text'), ('name', u'another'), ('submit', u'Submit')])
Run Code Online (Sandbox Code Playgroud)
而我希望得到的是接近这一点:
{
'default': '',
'name': ['short_text', 'another'],
'required': true
}
Run Code Online (Sandbox Code Playgroud) 我想从HTML表单中获取输入,并以JSON格式提供输出。选择多个值时,它们不会转换为JSON数组,仅使用第一个值。
@app.route('/form')
def show_form():
return render_template('form.html')
@app.route("/result", methods=['POST'])
def show_result():
result = request.form
return render_template('result.html', result=result)
Run Code Online (Sandbox Code Playgroud)
form.html:
@app.route('/form')
def show_form():
return render_template('form.html')
@app.route("/result", methods=['POST'])
def show_result():
result = request.form
return render_template('result.html', result=result)
Run Code Online (Sandbox Code Playgroud)
result.html:
<form method=POST>
<input name=server>
<select name=owners multiple>
<option value="thor">thor</option>
<option value="loki">loki</option>
<option value="flash">flash</option>
<option value="batman">batman</option>
</select>
<input type=submit>
</form>
Run Code Online (Sandbox Code Playgroud)
如果为所有者选择了多个值,“ thor”和“ flash”,则输出仅显示一个值:
{"server": "app-srv", "owners": "thor"}
Run Code Online (Sandbox Code Playgroud)
我希望业主能够列出:
{"server": "app-srv", "owners": ["thor", "flash"]}
Run Code Online (Sandbox Code Playgroud)
如何在不丢失列表值的情况下将表单显示为JSON?