Django-form错误信息展示
普通字段的错误信息(field.errors.0)
{% for field in form_obj %} <div class="form-group"> <label for="{{ field.id_for_label }}" class="col-sm-3 control-label">{{ field.label}}</label> <div class="col-sm-4"> {{ field }} </div> <span class="error_msg">{{ field.errors.0 }}</span> </div> {% endfor %}
全局错误信息
-
方式1(form_obj.non_field_errors.0)
<div class="form-group"> <div class="col-sm-offset-3 col-sm-10"> <button type="submit" class="btn btn-default">登录</button> <span class="error_msg">{{ form_obj.non_field_errors.0 }}</span> </div> </div>
-
方式二(此方式只能使用在,存在的字段上。)
- 在自定义form全局错误的时候,手动添加全局错误字段
def clean(self): username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = auth.authenticate(request=self.request,username=username,password=password) if user: auth.login(request=self.request,user=user) return self.cleaned_data else: # 之后就可以使用 'username'来获取错误提示 self.add_error('username','用户名密码不正确...') raise ValidationError('用户名密码不正确...')
- 在自定义form全局错误的时候,手动添加全局错误字段
-
方式三(form_obj.errors.all_error)
def clean(self): username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = auth.authenticate(request=self.request,username=username,password=password) if user: auth.login(request=self.request,user=user) return self.cleaned_data else: # 自定义名称,添加方法跟字典一样。值也可以随便设置。模板中的使用方法{{ form_obj.errors.all_error }} # 但是使用了这个方法之后,将不能再调用form_obj.errors的as_data、as_json、as_ul、as_text等方法,只能使用字典的默认方法 self._errors['all_error']= ['用户名密码不正确...'] raise ValidationError('用户名密码不正确...')