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. 方式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>

     

  2. 方式二(此方式只能使用在,存在的字段上。)

    • 在自定义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('用户名密码不正确...')    
  3. 方式三(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('用户名密码不正确...')    

     

     

 

posted on 2019-10-08 10:42  信奉上帝的小和尚  阅读(483)  评论(0编辑  收藏  举报

导航