Jinja/Wtform 需要验证
Posted
技术标签:
【中文标题】Jinja/Wtform 需要验证【英文标题】:Jinja/Wtform aria-required validation 【发布时间】:2015-12-17 08:15:09 【问题描述】:我有一个通过简单宏生成引导表单的前端:
% macro render_field(field, class_='', label_visible=true) -%
<div class="form-group % if field.errors % has-error % endif %">
% if (field.type != 'HiddenField' and field.type !='CSRFTokenField') and label_visible %
<label for=" field.id " class="control-label"> field.label </label>
% endif %
field(class_='form-control', **kwargs)
% if field.errors %
% for e in field.errors %
<p class="help-block"> e </p>
% endfor %
% endif %
</div>
%- endmacro %
我使用的 wtform 如下所示:
class CommentForm(Form):
comment = TextAreaField(validators=[DataRequired('Please enter your comment.')])
是否可以为验证器DataRequired
的字段添加aria-required="true"
形式的前端验证?
如果有,怎么做?
【问题讨论】:
【参考方案1】:使用一对或多对属性创建一个字典,以添加到 Jinja 宏中的字段中:
% set attribs = 'aria-required':"true" %
field(class_="form-control", **attribs)
你也可以内联
field(class="form-control", **'aria-required':"true" )
两个都好
【讨论】:
【参考方案2】:您需要将属性传递给字段。不幸的是,由于属性名称中的连字符,您不能直接执行此操作。虽然 erikwco 的建议可行,但如果您将属性添加为宏的一部分,它会阻止您将 kwargs
传递到字段中。 Jinja 似乎只有一个 **dict
可以在给定函数中扩展。
解决办法是modify the kwargs dictionary:
% do kwargs.update('aria-required': "true") %
field(class_="form-control", **kwargs)
为此,您可能需要在应用初始化期间向 jinja 发送 add the do
extension:
app.jinja_env.add_extension('jinja2.ext.do')
【讨论】:
以上是关于Jinja/Wtform 需要验证的主要内容,如果未能解决你的问题,请参考以下文章