【问题标题】:Jinja/Wtform aria-required validationJinja/Wtform 需要验证
【发布时间】: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"形式的前端验证?

如果有,怎么做?

【问题讨论】:

    标签: twitter-bootstrap-3 jinja2 wtforms flask-wtforms


    【解决方案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')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-30
        • 1970-01-01
        • 2019-02-07
        • 1970-01-01
        • 1970-01-01
        • 2013-05-16
        • 1970-01-01
        相关资源
        最近更新 更多