如何在Django中的自定义注册模板中显示错误消息

时间:2018-05-30 16:54:54

标签: django

我试图在自定义注册模板中显示错误消息。只是为了验证我的下面代码是否正常工作,我使用了{{form.as_table}}并正确显示了错误消息。但是,当我使用自定义注册模板时,如果我在注册表单上故意导致错误,则不会显示任何错误消息。

HTML

<form class="form-signin" method="POST">
        {% csrf_token %}
        <div class="container">
            <div class="jumbotron">
                <a class="navbar-brand js-scroll-trigger" href="{% url 'boutique:index' %}"><img width="165" height="30" src="{% static 'boutique/img/modvisor_logo_black.png' %}"></a>
                <br><br>

                <div class="text-center mb-4">
                    <h1 class="h3 mb-3 font-weight-normal">Join Modvisor</h1>
                    <p class="error-message">
                        {% if form.non_field_errors %}
                            {% for error in form.non_field_errors %}
                                {{ error }}
                            {% endfor %}
                        {% endif %}
                    </p>
                </div>

                <div class="form-label-group">
                    <input type="text" id="inputEmail" class="form-control" name="username" placeholder="Email address" required autofocus>
                    <label for="inputEmail">Email</label>
                </div>

                <div class="form-label-group">
                    <input type="password" id="inputPassword1" class="form-control" name="password1" placeholder="Password" required>
                    <label for="inputPassword">Password</label>
                </div>

                <div class="form-label-group">
                    <input type="password" id="inputPassword2" class="form-control" name="password2" placeholder="Password" required>
                    <label for="inputPassword">Confirm Password</label>
                </div>

                <!--
                <div class="form-label-group">
                    <input type="password" id="inputPassword" class="form-control" name="password2" placeholder="Password" required>
                    <label for="inputPassword">Confirm Password</label>
                </div>


                <div class="checkbox mb-3">
                    <label>
                        <input type="checkbox" value="remember-me"> Remember me
                    </label>
                </div>
                -->

                <button class="btn btn-success btn-block" type="submit">Sign Up</button>
                <br>
                <a href="{% url 'login' %}"><button class="btn btn-secondary btn-block" type="button">Back</button></a>

                <p class="mt-5 mb-3 text-muted text-center">&copy; 2018 Modvisor All Rights Reserved.</p></p>
            </div>
        </div>
    </form>

forms.py

class SignupForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        fields = UserCreationForm.Meta.fields

views.py

def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect(settings.LOGIN_URL)
    else:
        form = SignupForm()
    return render(request, 'accounts/register.html', {'form': form})

1 个答案:

答案 0 :(得分:1)

您应该使用form.errors.field_name来解决与特定字段相关的错误。与username字段中的错误一样,它将是form.errors.username

您的HTML看起来像

<div class='error'>{{form.errors.username}}</div>
<div class="form-label-group">
    <input type="text" id="inputEmail" class="form-control" name="username" placeholder="Email address" required autofocus>
    <label for="inputEmail">Email</label>
</div>