zoukankan      html  css  js  c++  java
  • DRF数据验证+数据存储

    1.验证数据的自定义类

    class BooksDRFt(serializers.ModelSerializer):
        class Meta:
            model = Book
            fields = '__all__'
    	#要验证的字段
        author = serializers.CharField(required=False)
        #要验证的字段
        name = serializers.CharField(min_length=2, error_messages{'required': '不能为空', 'min_length': '最短长度是二'})
        
        #局部钩子
        def validate_name(self,value):
            response = {'status':100,'msg':'成功'}
            res = models.Book.objects.filter(name=value)
            if res:
                raise exceptions.ValidationError('书名重复!')
    
            else:
                return value
    	#全局钩子
        def validate(self, attrs):
            name = attrs.get('name')
            price = attrs.get('price')
            if str(name) == str(int(price)):
                raise exceptions.ValidationError('重复!')
            else:
                return attrs
    

    ​ 注意:1 必须继承ModelSerializer

    ​ 2.在视图函数中的使用

    ​ 1 验证+存储数据

    class Books(APIView):
        def post(self,request):
            book_res = common.BooksDRFt(data=request.data)
            if book_res.is_valid():
                book_res.save()
                return JsonResponse(book_res.data,safe=False)
            else:
                return JsonResponse(book_res.errors)
    
    

    ​ 2 验证+修改数据

    class BooksUpdateCreate(APIView):
        def put(self,request,id):
            book = models.Book.objects.filter(id=id).first()
            book_res = common.BooksDRFt(data=request.data,instance=book)
            if book_res.is_valid():
                book_res.save()
                return JsonResponse(book_res.data,safe=False)
            else:
                return JsonResponse(book_res.errors)
    
  • 相关阅读:
    独木舟上的旅行
    会场安排问题
    喷水装置(二)
    喷水装置(一)
    款待奶牛
    整理书本
    贪心算法基本思想和典型例题(转)
    贪心算法
    太乱了,不要了
    Runtime Error:Floating point exception 不知道拿错了
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/10110534.html
Copyright © 2011-2022 走看看