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)
    
  • 相关阅读:
    局部测试用例,日常笔记
    软件测试工程师素养(日常笔记)
    Java控件(日常笔记)
    开发大体流程
    sort学习 LeetCode #406 Queue Reconstruction by Height
    MySQL 变量
    [转帖]查看结构体成员的大小和偏移地址的方法
    [转帖]SQL99
    static静态类 静态函数 静态字段
    默认构造函数
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/10110534.html
Copyright © 2011-2022 走看看