大家好,我正在学习烧瓶,有问题。我试图基于验证来修改输入表单控件类。
在jinja2模板中,我有以下内容(我正在使用render_field)导入了宏:
{% from 'includes/_formhelpers.html' import render_field %}
<div class="form-group">
<div class="input-group input-group-alternative mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-hat-3"></i></span>
</div>
{{ render_field(form.username, placeholder="Username",class="form-control") }}
</div>
</div>
然后在宏文件中,我具有以下内容:
{% macro render_field(field) %}
{{ field(**kwargs)|safe }}
{% if field.errors %}
{% for error in field.errors %}
<input class="form-control is-invalid">
<div class="invalid-feedback">
{{ error }}
</div>
{% endfor %}
{% endif %}
{% endmacro %}
问题在于宏正在渲染另一个输入框
生成的HTML:
<div class="form-group">
<div class="input-group input-group-alternative mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-hat-3"></i></span>
</div>
<input class="form-control" id="username" name="username" placeholder="Username" required="" type="text" value="pandazulweb">
<input class="form-control is-invalid">
<div class="invalid-feedback">
Username already in use.
</div>
</div>
我认为这与kwargs以及我如何将类传递给模板有关,但是我是jinja2的菜鸟
答案 0 :(得分:0)
除非我丢失了某些内容,否则似乎第二个字段是由于“ ”所引起的,您将其包括在宏的错误条件中。
编辑: 要将类传递到表单字段,您需要使用“ class _ =“ is-invalid””,而不是“ class =”。因此,只需使用它并从错误情况中删除第二个输入即可。
编辑2:我想我明白了问题所在。您需要在else错误块中的宏错误块中放置对field()的首次调用。因此,只有在没有错误的情况下,它才会使用kwargs等创建字段。