new.html
{{ form.particular(name='particular[]') }}
我尝试了上面的代码在输入字段中分配名称,但出现以下错误。但是如果我添加一个类或ID替换名称
(例如:{{form.particular(id ='particulars')}})可以,但不适用于名称,只会输出以下错误:
builtins.TypeError
TypeError:html_params()为关键字参数“名称”获得了多个值
任何解决方案。预先谢谢你:)
答案 0 :(得分:0)
如果它正在通过渲染模板发送表单数据,则只需将变量名放在{{var_name}}之间的模板中,并在代码中在返回渲染模板函数中使用此var_name。
答案 1 :(得分:0)
定义表单时:
class WebForm(FlaskForm):
particular = StringField('some_description')
则您将拥有一个字段,其字段name=particular
是wtforms的基础功能。因此,当您尝试执行form.particular(name='particular[]')
时,由于无法在jinja2模板中重新定义名称,因此会出现多值错误。
您可以通过以下两种方式之一覆盖名称(请注意,两种名称都是在jinja2渲染发生之前的服务器端):
1)静态:即定义一个新名称:
class WebForm(FlaskForm):
particular_new = StringField('some_description')
2)动态:即包装函数会创建修改后的静态表单:
def WebForm(new_name):
class TempForm(FlaskForm):
pass
setattr(TempForm, new_name, StringField('some_description'))
return TempForm()
# will create a WebForm with attribute name of 'new_name' as StringField