校验
# objson.py class BookJson(serializers.ModelSerializer): class Meta: model = models.Book fields = '__all__' # 单个字段校验 name = serializers.CharField(min_length=3, max_length=5, error_messages={'min_length': '太短'}) # 局部钩子校验 def validate_name(self, value): from rest_framework.exceptions import ValidationError if 'sb' in value: raise ValidationError('不能出现哔词汇') return value # views.py class Books(APIView): # 新增 def post(self, request): book = request.data book_json = objson.BookJson(data=book) # 必须明确data if book_json.is_valid(): # 校验 book_json.save() # 保存 return Response({ 'status': 0, 'msg': 'ok', 'results': book_json.data }) return Response({ 'status': 1, 'msg': book_json.errors, }) 了解
# 全局钩子校验 def validate(self, attrs): from rest_framework.exceptions import ValidationError pwd = attrs.get('pwd') re_pwd = attrs.get('re_pwd') if pwd == re_pwd: return attrs else: raise ValidationError('密码校验失败') 认证组件
# views.py class Auth: def authenticate(self, request): # 完成具体认证功能 pass class Book(APIView): authentication_classes = [Auth, ] 文章来源: https://blog.csdn.net/qq_36019490/article/details/96512034