4

Users というモデルがあり、そのモデルの 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)

今、私の 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>

だから、私が欲しいのは、{{ field.errors}} の最初のエラーだけを表示したいということです。私が考えていたのは次のようなものでした:

    {% if form.errors %}
        {% for field in form %}
            <p> {{field.errors}} </p> {{ break}}
        {% endfor %}
    {% endif %}

しかし、django テンプレート言語に切れ目はありませんよね? {% for field in form|slice:":1" %} の使用も考えてみましたが、それもうまくいきません。誰でもこれを行う方法を知っていますか?

4

2 に答える 2

7

ドット表記を使用して、django テンプレートのリストにインデックスを付けることができます。

{{ field.errors.0 }}

ただし、それを行う前に少なくとも 1 つのエラーがあることを確認してください。そうしないと、Index out of range エラーが発生します。

于 2013-09-23T00:30:13.873 に答える