Skip to main content
 首页 » 编程设计

python之如何在 jinja2 中获取 WTForms 验证器

2025年05月04日24softidea

我想做的是检查表单对象具有什么类型的表单验证器,以便我可以根据这些属性呈现字段。例如,如果表单具有最大长度验证,则将最大长度属性添加到 html 表单。

我在想它是这样工作的:

zip_code = TextField('Zip Code', [validators.Length(min=5, max=11)]) 

将像这样转到 Jinja2 宏:

{% if field.valdator "has max length" %} 
  {% set class = class + ' maxlength="11" ' %} 
{% endif %} 
{{ field(class=class, **kwargs) }} 

请您参考如下方法:

{{ form.field.validators }} 返回一个列表,因此您可以通过索引值获取验证器。

class ZipCodeForm(Form): 
    zip_code = StringField("Zip Code", [validators.Length(3,45)]) 
 
def register(): 
    form = ZipCodeForm() 
    return render_template('register.html', form=form) 
 
# register.html 
... 
 {% macro textfield(type=text, max=20) %} 
     <input type={{type}}, size={{max}} > 
 {% endmacro %} 
 
 {% if form.zip_code.validators[0]["max"] %} 
     textfield(max=60) 
 {% endif %}