使用 Flask 从 HTML 表单发布对象数组? [复制]
Posted
技术标签:
【中文标题】使用 Flask 从 HTML 表单发布对象数组? [复制]【英文标题】:Post an array of objects from an HTML form using Flask? [duplicate] 【发布时间】:2018-08-27 13:37:30 【问题描述】:我想生成这个 JSON 对象,其中包含来自表单输入的对象数组:
"network":[
"layer_type": "conv2d", "num_filters": 16, "kernel_size": 2, "padding": "valid", "stride": 2,
"layer_type": "max_pool2d", "num_filters": 16, "kernel_size": 2, "padding": "valid", "stride": 2,
"layer_type": "conv2d", "num_filters": 32, "kernel_size": 3, "padding": "valid", "stride": 2
]
有没有办法使用 Flask 来做到这一点?
更新
表单如下所示:
至于动态生成的html代码的sn-p:
<li>
<select name="network[][layer_type]"><!-- options here --></select>
<input type="number" name="network[][num_filters]">
<!-- other parameters here -->
</li>
<li>
<select name="network[][layer_type]"><!-- options here --></select>
<input type="number" name="network[][num_filters]">
<!-- other parameters here -->
</li>
编辑:由于这个问题被标记为重复,我将添加更多信息。我想在question 中实现类似的目标,但使用 Flask:
"students" => [
"first" => "foo",
"last" => "bar",
"age" => "21"
,
"first" => "baz",
"last" => "qux",
"age" => "19"
]
根据接受的答案,它确实可以与 Ruby 一起使用这种形式:
<!-- first student -->
<input type="text" name="students[][first]">
<input type="text" name="students[][last]">
<input type="text" name="students[][age]">
<!-- second student -->
<input type="text" name="students[][first]">
<input type="text" name="students[][last]">
<input type="text" name="students[][age]">
但我想知道如何使用 Flask。
【问题讨论】:
你的意思是要获取json格式的表单数据吗? 是的。我想获取包含 json 格式的对象数组的表单数据。 【参考方案1】:-
您可以使用
form.data
以json 格式访问表单数据
例如
考虑如下定义的形式,
class GeneralForm(FlaskForm):
boolean_val = BooleanField('Boolean')
a_float = FloatField('Severity')
submit = SubmitField('Submit')
在应用路由中,
@app.route('/wtforms', methods=['GET', 'POST'])
def debug_wtforms():
form = GeneralForm()
if request.method == 'POST' and form.validate_on_submit():
print(form.data) # Form data as a dict
return render_template('index1.html', form=form)
-
如果您只是直接在html模板中定义了表单,您可以使用
request.form.to_dict(flat=False)
访问表单数据
我希望这会有所帮助。
【讨论】:
我直接在html模板中定义了form表单。我遵循了您提供的第二个选项,但没有得到我想要的输出。这是我得到的输出:'network[][layer_type]': 'conv2d', 'network[][padding]': 'valid', 'output_layer': 'ctc_decoder', 'network[][kernel_size]': '2', 'loss': 'ctc', 'network[][num_filters]': '16', 'optimizer': 'adam', 'learning_rate': '0.0001', 'network[][stride]': '2', 'architecture_name': 'dummy_model', 'action': '', 'network[][pool_size]': '2', 'metrics': 'label_error_rate'
你能用包含表单的 html 模板来支持你的问题吗?
更新帖子。
不要介意我评论中不包含“network”的其余参数。
这是一个相关问题:***.com/questions/38126371/…以上是关于使用 Flask 从 HTML 表单发布对象数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章