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)
    
  • 相关阅读:
    AngularJs $location 和 $window
    AngularJS——自定义服务详解(factory、service、provider)
    angularAMD+requireJs
    angular ui-router时要使用html5Mode=true
    CSS3的calc()使用
    React Ajax this.IsMounted() is not a function
    css有用的代码片段
    8908
    454
    234
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/10110534.html
Copyright © 2011-2022 走看看