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 需要验证的主要内容,如果未能解决你的问题,请参考以下文章

使用JAVA请求需要Basic身份验证的网页

请问:AppScan如何扫描需要输入验证码的网站呢?

开放式身份验证需要密码。 预共享密钥不需要密码。

将默认消息“验证错误:需要值”更改为“需要值”

我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?

QQ加群需要短信验证怎么解除?