如何在每个字段下显示表单错误?

时间:2018-03-18 07:51:46

标签: python html django

我想知道如何在每个字段下显示表单错误。考虑到我有登录表单,如果用户名出现问题,则应显示特定错误,否则如果密码有问题,则应在密码字段下显示错误。 我一直在寻找一种合适的方法,这就是我带来的:



  <div class="jumbotron">
                    <form class="login" method="POST">
                        {% csrf_token %}
                        <h4>Log In</h4>
                        <p class="field">{{ form.username }}</p>
                        <p class="field">{{ form.password }}</p>
                        <button class="btn btn-default" type="submit">Log In</button>
                        {% if form.errors %}
                            {% for field in form %}
                                {% for error in field.errors %}
                                    <div class="alert alert-danger">
                                        <strong>{{ error|escape }}</strong>
                                    </div>
                                {% endfor %}
                            {% endfor %}
                            {% for error in form.non_field_errors %}
                                <div class="alert alert-danger">
                                    <strong>{{ error|escape }}</strong>
                                </div>
                            {% endfor %}
                        {% endif %}
                    </form>
                </div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

养成循环表单的习惯是一种很好的做法,这样您就可以为所有表单编写通用模板。所以我就像这样;

<div class="jumbotron">
    <form class="login" method="POST">
        {% csrf_token %}

        <h4>Log In</h4>

        {% if form.non_field_errors %}
            {% for error in form.non_field_errors %}
                <div class="alert alert-danger">
                    <strong>{{ error|escape }}</strong>
                </div>
            {% endfor %}
        {% endif %}

        {% for hidden in form.hidden_fields %}
            {{ hidden }}
        {% endfor %}

        {% for field in form.visible_fields %}
            {{ field.label_tag }}
            <p class="field">{{ field }}</p>
            {% if field.help_text %}
                <p class="help">{{ field.help_text }}</p>
            {% endif %}
            {% if field.errors %}
                {{ field.errors }} {# outputs a UL with class 'errorlist' #}
            {% endif %}
        {% endfor %}

        <button class="btn btn-default" type="submit">Log In</button>

    </form>
</div>

然后,您可以将该表单包含在模板和模板中。将它包含在您想要的任何提交/取消按钮中。

答案 1 :(得分:0)

试试这个:)

 <div class="jumbotron">
                    <form class="login" method="POST">
                        {% csrf_token %}
                        <h4>Log In</h4>
                        <p class="field">{{ form.username }}
                        {{ form.username.errors }}
                        </p>
                        <p class="field">{{ form.password }}
                        {{ form.password.errors }}
                        </p>
                        <button class="btn btn-default" type="submit">Log In</button>
                    </form>
                </div>