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)
    
  • 相关阅读:
    JSJ—类与对象
    JSJ—案例谈面向对象
    实现简单神经网络
    SSM+Netty项目结合思路
    SSM-Netty实现软硬件通信,真实项目案例
    Netty实战十四之案例研究(一)
    Netty实战十三之使用UDP广播事件
    Netty实战十一之预置的ChannelHandler和编解码器
    Netty实战十二之WebSocket
    Netty实战十之编解码器框架
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/10110534.html
Copyright © 2011-2022 走看看