django:如何仅访问form.errors中的第一个错误消息?

use*_*875 1 django django-templates django-forms django-views

我有一个名为“用户”的模型,并且有一个名为“ UsersForm”的模型。在views.py中,我创建了一个UsersForm版本,如下所示

form = UsersForm()
if reqest.method == POST:
    form = UsersForm(request.POST)
    if form.is_valid():
        form.save()
    c = {}
    c.update(csrf(request))
    c.update({'form':form})
    return render_to_response('home_page.html', c)
Run Code Online (Sandbox Code Playgroud)

现在,我的home_page.html是这样的:

<html>
    <body>

    <form method="post" action="">{% csrf_token %}
        {{ form }}
    <input type="submit" value="Register"/>
    </form>

    {% if form.errors %}
        {% for field in form %}
            <p> {{field.errors}} </p>
        {% endfor %}
    {% endif %}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

因此,我想要的是,我只想显示{{field.errors}}中的第一个错误。我在想的是这样的:

    {% if form.errors %}
        {% for field in form %}
            <p> {{field.errors}} </p> {{ break}}
        {% endfor %}
    {% endif %}
Run Code Online (Sandbox Code Playgroud)

但是Django模板语言没有中断,对吧?我还尝试过考虑使用{%for form | slice:“:1”%}中的字段,但这也不起作用。有人知道怎么做吗?

jpr*_*itt 5

您可以使用点表示法在Django模板中为列表编制索引:

{{ field.errors.0 }}
Run Code Online (Sandbox Code Playgroud)

不过,在执行此操作之前,请务必检查是否至少有1个错误,否则您将得到“索引超出范围”错误。