Twitter bootstrap 3 Jinja/WT表格需要验证

Twitter bootstrap 3 Jinja/WT表格需要验证,twitter-bootstrap-3,jinja2,wtforms,flask-wtforms,Twitter Bootstrap 3,Jinja2,Wtforms,Flask Wtforms,我有一个前端,通过一个简单的宏生成引导表单: {% 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_vis

我有一个前端,通过一个简单的宏生成引导表单:

{% 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 %}
是否可以以
aria required=“true”
的形式为作为验证器的字段添加前端验证
DataRequired


如果是,如何创建一个字典,其中包含一对或多对属性,以添加到Jinja宏中的字段中:

{% set attribs = {'aria-required':"true"}  %}
{{ field(class_="form-control", **attribs) }}
你也可以在线做

{{ field(class="form-control", **{'aria-required':"true"} ) }}

无论哪种方法都很好

您需要将属性传递给字段。不幸的是,由于属性名中的连字符,无法直接执行此操作。虽然erikwco的建议会起作用,但如果您将属性作为宏的一部分添加,它会阻止您将
kwargs
传递到字段中。似乎Jinja只有一个
**dict
要在给定函数中展开

解决办法是:

要使其正常工作,您可能需要在应用程序初始化期间使用jinja:

app.jinja_env.add_extension('jinja2.ext.do')
{% do kwargs.update({'aria-required': "true"}) %}
{{ field(class_="form-control", **kwargs) }}
app.jinja_env.add_extension('jinja2.ext.do')