flask-wtform 占位符行为

Zio*_*ion 3 python flask flask-wtforms

形式:

class SignUpForm(Form):
    username = TextField("Username: ",validators=[Required(),Length(3,24)])
Run Code Online (Sandbox Code Playgroud)

为什么这样做?

form = SignUpForm()
form.username(placeholder="username")
Run Code Online (Sandbox Code Playgroud)

但当您直接使用占位符作为SignUpForm?

class SignUpForm(Form):
        username = TextField("Username: ",placeholder="username",validators=[Required(),Length(3,24)])
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误 TypeError: __init__() got an unexpected keyword argument 'placeholder'

我对此有点困惑,因为直接在类上定义它应该与做一样,form.username(placeholder="username") 但为什么它会给出错误?

dav*_*ism 6

定义字段与渲染字段不同。 调用一个字段来呈现它接受任意关键字参数来向输入添加属性。 该库的设计初衷不是在定义字段时采用任意参数。

如果你想要一个快捷方式来渲染一个以标签为占位符的字段,你可以写一个 Jinja 宏。

{% macro form_field(field) %}
{{ field(placeholder=field.label.text) }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)