普通字段的错误信息(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_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('用户名密码不正确...')