flask-wtforms 字段需要

flask-wtforms field required

如何在此烧瓶代码上添加所需的标签:

{{ form.youtube_href(type='url', class='form-control') }}

实际输出为:

<input class="form-control" id="youtube_href" name="youtube_href" value="" type="url">

需要这个输出 bat 给出错误:

<input class="form-control" id="youtube_href" name="youtube_href" value="" type="url" required>

我试过这个蝙蝠报错:

{{ form.youtube_href(type='url', class='form-control', 'required') }}

从 WTForms 2.2(2018 年 6 月 2 日)开始,如果字段具有设置 required 标志的验证器,例如 DataRequiredInputRequired。如果出于某种原因你不想渲染该属性,你可以传递 required=False。或者如果你想禁用所有浏览器验证,你可以在 form 标签中设置 novalidate 属性。一般来说,您应该更愿意启用浏览器验证,因为它会阻止 request/response 进行简单验证,这是可取的。


您在关键字参数之后传递位置参数,这是一个语法错误。相反,传递 required=True,这将在标签上设置一个裸属性。检查字段上的标志以查看是否设置了 Required 验证器:field.flags.required 是布尔值。创建一个 URLField 而不是手动传递类型。

from flask_wtf import Form
from wtforms.fields.html5 import URLField
from wtforms.validators import InputRequired

class MyForm(Form):
    youtube_href = URLField(validators=[InputRequired()])

form = MyForm()
print(form.youtube_href(required=form.youtube_href.flags.required))
# <input id="youtube_href" name="youtube_href" required type="url" value="">

对于那些只想将 required 属性添加到他们的 html 输入的人,可以按照上面 Raja Simon 提到的评论来完成。只需在 模板 中调用您的字段名称 required='required' 示例:

<form>
  ...
  {{myform.my_name_field(required='required')}}
  {{myform.my_email_field(required='required')}}
  ...
</form>

以上代码将产生如下字段:

<input id="my_name_field" name="my_name_field" required="required" type="text" value="">