可能有更好的方法可以做到这一点,但我正在尝试使用隐藏的表单来使用WTForms在Flask中定义按钮。当我尝试设置值时,似乎字段生成两次。一旦使用默认值“”,再次使用模板中设置的值。最终,在帖子中过去的回溯是两个变量的空值。
我要做的是根据分配的按钮将每个实例化的值设置为不同的值,这意味着必须在模板中完成。
这就是我所拥有的:
烧瓶应用程序中定义的表单:
class refreshInstances(Form):
type = HiddenField('type')
value = HiddenField('value')
def instances():
form = refreshInstances()
return render_template('instances.html', form=form)
模板instances.html的子集:
<form class="form" method="POST" role="form" id="updall">
{{ form.hidden_tag() }}
{{ form.type(value='res_id') }}
{{ form.value(value='12345') }}
</form>
<button class='btn btn-primary btn-block' type='submit' form='updall'><span class="glyphicon glyphicon-refresh"></span> Update All</button>
呈现HTML:
<form class="form" method="POST" role="form" id="updall">
<div>
<input id="csrf_token" name="csrf_token" type="hidden" value="1428">
<input id="type" name="type" type="hidden" value="">
<input id="value" name="value" type="hidden" value="">
</div>
<input id="type" name="type" type="hidden" value="res_id">
<input id="value" name="value" type="hidden" value="cjohnson">
</form>
<button class="btn btn-primary btn-block" type="submit" value="submit" form="updall"><span class="glyphicon glyphicon-refresh"></span> Update All</button>
答案 0 :(得分:2)
您是否要type
和value
以一种形式渲染两次?如果不是,则问题在于form.hidden_tag()
会渲染所有隐藏字段,包括csrf_token
,type
和value
。假设您使用的是csrf_token(除非有充分的理由,否则一个好主意),将form.hidden_tag()
替换为form.csrf_token()
:
<form class="form" method="POST" role="form" id="updall">
{{ form.csrf_token() }}
{{ form.type(value='res_id') }}
{{ form.value(value='12345') }}
</form>
<button class='btn btn-primary btn-block' type='submit' form='updall'><span class="glyphicon glyphicon-refresh"></span> Update All</button>
答案 1 :(得分:0)
我认为这段代码可以解决您的问题。 你应该根据需要调整它。
def instances():
form = refreshInstances()
form.type.default = 123
form.value.default = 456
form.process()
return render_template('instances.html', form=form)
<form class="form" method="POST" role="form" id="updall">
{{ form.hidden_tag() }}
{{ form.type }}
{{ form.value }}
</form>