我想在渲染tamplete之前填充数据到列表字段。 这就是我到目前为止所做的。
class SizeVariationForm(Form):
name = TextField("name")
sku = TextField("SKU Number")
class AddVariationForm(NewListingForm):
item_list = FieldList(FormField(SizeVariationForm))
add_field = SubmitField('Add Variations')
@app.route('/index', methods=['GET', 'POST'])
def add_inputs():
form = AddVariationForm(request.form)
if form.add_field.data:
# what i want is to poluate sku data here
new_variation = form.item_list.append_entry()
return render_template('index')
目前的结果是
<input id="item_list-0-variation" value="">
期望的结果是
<input id="item_list-0-variation" value="Some Value here">
答案 0 :(得分:1)
你会得到预期的输出,但我不确定这是你想要的。
class SizeVariationForm(Form):
name = TextField("Name")
sku = TextField("SKU")
class TestForm(Form):
item_list = FieldList(FormField(SizeVariationForm))
add_field = SubmitField("Add Variations")
@app.route('/index', methods=['GET', 'POST'])
def add_inputs():
f = SizeVariationForm()
form = AddVariationForm()
if request.method == 'POST':
f.name.data = "Same value"
f.sku.data = "sku data"
form.item_list.append_entry(f)
return render_template('index.html', form=form)
#index.html
<form method="POST", action="/">
{{form.item_list}}
{{form.add_field.label}}{{form.add_field}}
</form>
答案 1 :(得分:1)
基类Field
接受default
参数。
default - 如果未提供表单或对象输入,则指定给字段的默认值。可能是可赎回的。
将此参数提供给字段的init方法。 IE
class MyForm(Form):
foo = SomeField("Bar", default="Example")