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)
    
  • 相关阅读:
    oracle数据库使用PL/sql导入excel数据
    http协议详解之响应报文 3
    http详解之post 2
    http协议详解1
    tomcat配置https协议
    linux服务端导入oracle数据库.sql脚本
    fiddler查看http压缩格式传输的报文
    SurfaceView绘制录音波形图
    android 蓝牙SPP协议通信
    好用的Android屏幕适配
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/10110534.html
Copyright © 2011-2022 走看看