如何覆盖Flas中的表单

2024-04-25 11:55:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在新建.html在

{{ form.particular(name='particular[]') }}

我尝试使用上面的代码在我的输入字段中分配一个名称,但是我得到了以下错误。但是如果我添加一个类或id来替换名称 (例如:{特殊形式(id='details')}})它对name有效,但对name无效,只输出以下错误:

在内置类型错误
TypeError:html_params()为关键字参数“name”获取了多个值

任何解决方案。提前感谢:)


Tags: 代码nameform名称id类型html错误
2条回答

定义窗体时:

class WebForm(FlaskForm):
    particular = StringField('some_description')

然后您有一个字段,其name=particular,这是wtforms的底层函数。因此,当您尝试执行form.particular(name='particular[]')操作时,会出现多值错误,因为您无法在jinja2模板中重新定义名称。在

您可以使用以下两种方法之一覆盖名称(注意,在jinja2渲染发生之前,这两种方法都是服务器端):

1)静态:即定义一个新名称:

^{pr2}$

2)动态:即wrap函数创建一个修正的静态形式:

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

如果它是通过render template发送表单数据,那么只需将变量名放在模板中{{var_name}}之间,并在代码中使用return render template函数中的这个var_名称。在

相关问题 更多 >