首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何覆盖wtforms Flask中的名称

如何覆盖wtforms Flask中的名称
EN

Stack Overflow用户
提问于 2018-08-01 02:27:33
回答 2查看 1.3K关注 0票数 1

new.html

代码语言:javascript
复制
{{ form.particular(name='particular[]') }}

我尝试了上面的代码在我的输入字段中分配一个名称,但我得到了一个以下错误。但是,如果我添加一个类或id来替换名称(例如:{{ form.particular(id='particulars') }} ),它可以工作,但不能用于名称,只会输出以下错误:

builtins.TypeError

名称: html_params()为关键字参数‘TypeError’获取了多个值

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

EN

回答 2

Stack Overflow用户

发布于 2018-08-01 05:48:14

定义表单时:

代码语言:javascript
复制
class WebForm(FlaskForm):
    particular = StringField('some_description')

然后你有一个字段,它的name=particular,这是wtforms的底层函数。因此,由于您不能在jinja2模板中重新定义名称,因此当您尝试执行form.particular(name='particular[]')时,它会给出多值错误。

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

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

代码语言:javascript
复制
class WebForm(FlaskForm):
    particular_new = StringField('some_description')

2)动态:即,wrap函数创建修改后的静态形式:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2018-08-01 02:57:53

如果它通过render template发送表单数据,则只需将变量名称放在模板中的{{ var_name }}之间,并在代码中使用返回render template函数中的此var_name。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51619855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档