在WTForms字段上设置数据属性

use*_*828 8 python jinja2 flask wtforms

我想将"data-"属性添加到表单字段以与Bootstrap集成.我在模板中尝试了以下内容:

{{ form.test(data-toggle="toggle", data-size="mini", data-on="Yes", data-off="No", type="checkbox")}}
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

TemplateSyntaxError: expected token ',', got '='
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误,如何解决?

dav*_*ism 11

您需要使用有效的Python名称作为变量名称.因此,"数据切换"之类的名称无效,因为它们中包含" - ".更改名称以使用下划线,例如"data_toggle".对于无法识别的关键字,WTForms会自动将"_"转换为" - ".

{{ form.test(data_size="mini") }}
Run Code Online (Sandbox Code Playgroud)

您还可以使用dict解包来使用非有效变量的键传递关键字参数.

{{ form.name(**{"data-size": "mini"}) }}
Run Code Online (Sandbox Code Playgroud)

您可以设置字段的默认属性,而不是在渲染时设置属性render_kw.

class ExampleForm(Form):
    name = StringField(render_kw={"data-size": "mini"})
Run Code Online (Sandbox Code Playgroud)