首页 > 解决方案 > 如何在没有 html 标签的情况下呈现 form.errors

问题描述

我想在没有 html 标记的情况下单独呈现 form.errors 但它似乎不起作用

视图.py

....
context = {
        'login_error': form.errors,
        'login_form': LoginForm(),
    }

return render(request, 'shop/login.html', context)
....

登录.html

....
<label class="mt-1"> {{ login_form.username.label }} </label>
{{ login_form.username }}
{{ login_error.username }}

<label class="mt-1"> {{ login_form.password.label }} </label>
{{ login_form.password }}
{{ login_error.password }}
....

我得到的答案是在一个循环中解压它,然后添加一个|escape

....
{% for error in login_error %}
{{ error|escape }}
{% endfor %}

<label class="mt-1"> {{ login_form.username.label }} </label>
{{ login_form.username }}

<label class="mt-1"> {{ login_form.password.label }} </label>
{{ login_form.password }}
....

所以,问题是,为什么这个输出带有 html 标签

{{ login_error.username|escape }}
{{ login_error.password|escape }}

但是这个没有html标签的输出与上面的基本相同(?)

{% for error in login_error %}
{{ error|escape }}
{% endfor %}

预期的结果是没有html标签的字段错误,但{{ login_error.username|escape }}也输出html标签

{% for error in login_error %}
{{ error|escape }}
{% endfor %}

输出没有 html 标签但需要循环,我需要单独输出错误但没有 html 标签

标签: djangopython-3.xdjango-forms

解决方案


推荐阅读