首页 > 解决方案 > 努力显示 django 验证消息

问题描述

我试图在我的模板上为我的登录表单显示一个内置的 Django 验证错误,我无法收到任何错误消息,例如“用户名和密码不匹配”。我究竟做错了什么?这是我的forms.py

from django import forms
from django.contrib.auth.forms import AuthenticationForm

class LoginForm(AuthenticationForm):
    username = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Username'}))
    password = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control', 'placeholder':'Password'}))
    botcatcher = forms.CharField(widget=forms.HiddenInput, required=False)

在我的项目 url.py

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(template_name='frontend/login.html', form_class=LoginForm), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='frontend/logout.html')),
    # path('backend/', include('backend.urls')),
    path('mrc/', include('frontend.urls')),
    path('admin/', admin.site.urls),
]

在 login.html 上

{% for my_field in form.visible_fields %}
                      <!-- THIS IS FOR ERROR IN THE FORM -->
                        {% if my_field.errors %}
                            {% for err in my_field.errors %}
                            <div class="alert alert-danger">{{ err }}</div>
                            {% endfor %}
                        {% endif %}
                       <!-- THIS IS FOR THE FIELDS -->
                        <div class="form-group">
                          {{ my_field.label_tag }}
                          {{ my_field }}

                        </div>
                        <!-- END THE FIELDS -->
{% endfor %}

标签: djangovalidationdjango-forms

解决方案


LoginView没有任何特定字段相关的错误消息,只有两个非字段错误消息:

  • 无效登录和
  • 非活动用户。

您可以像这样呈现这些错误:

{% for error in form.non_field_errors %}
    {{ error }}
{% endfor %}

推荐阅读