gpt4 book ai didi

python - 如何使用jinja2宏修改css类

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:30 25 4
gpt4 key购买 nike

大家好,我正在学习 Flask,但遇到了问题。我正在尝试根据验证修改输入表单控件类。

在 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 %}

问题是宏在渲染另一个输入框时

Rendered form

生成的 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 的菜鸟

最佳答案

除非我遗漏了某些内容,否则第二个字段似乎是由于您将其包含在宏的错误条件中的“<input class=“form-control is-invalid”>”所致。

编辑: 为了将类传递到表单字段,您需要使用“class_=“is-invalid””,而不是“class=”。因此,只需使用它并从错误案例中删除第二个输入即可。

编辑2:我想我明白问题所在了。您需要将对 field() 的第一次调用放在宏的错误 block 内的 else block 中。因此,只有在没有错误的情况下,它才会使用 kwargs 等创建字段。

关于python - 如何使用jinja2宏修改css类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com