from 提交验证数据库是否存在

单个错误第一种方式

修改原码方式


代码:

 
 
def ajax(request):
    if request.method == 'GET':
        obj = forms.UserForm()
        return render(request,'ajax.html',{'obj':obj})
    else:
        ret = {'status':False,'message':None}
        import json
        obj = forms.UserForm()
        if obj.is_valid():
            # 登录验证数据库是否存在
            print(obj.cleaned_data)
            if models.Users.objects.filter(username=obj.username).count(): # 数据库是否存在
                obj.errors['username'] = ['用户名已存在']
            if models.Users.objects.filter(email=obj.email).filter().count():
                obj.errors['email'] = ['email已存在']
            ret['status'] = True
            return HttpResponse(json.dumps(ret))
 from django.core.exceptions import NON_FIELD_ERRORS, ValidationError
 # 验证数据库是否存在
 class AjaxForm(forms.Form):
     username = fields.IntegerField()
     user_id = fields.IntegerField(
         widget=widgets.Select(choices=[(0,'q'),(1,'w')])
     )
     # 数据已经存到obj.cleaned_data
     # 之后调用 clean_%s
     # 必须有返回值
     # 如果出错:raise ValidationError('已存在')
     # 异常捕捉 ValidationError   只能捕捉这个异常
     def clean_username(self):
         v = self.cleaned_data['username']
         if models.Users.objects.filter(username=v).count():
             raise ValidationError('用户名已存在')
     def clean_user_id(self):
         return self.cleaned_data['user_id']           

整体错误

代码

 def clean(self):
        value_dict = self.cleaned_data
        v1 = value_dict.get('username')
        v2 = value_dict.get('user_id')
        if v1 == 'root' and v2 == 1:
            raise ValidationError('整体错误信息')
        return self.cleaned_data

# 单个错误信息 前端放到字段名中 
# 前端取出错误信息 .__all__ 可以取出整体错误信息
#  _post_clean()方法 自定制 自己做异常处理









猜你喜欢

转载自blog.csdn.net/weixin_42100915/article/details/80742822