码迷,mamicode.com
首页 > 其他好文 > 详细

DRF数据验证+数据存储

时间:2018-12-12 19:38:24      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:ret   status   int   view   field   python   exce   create   继承   

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)

DRF数据验证+数据存储

标签:ret   status   int   view   field   python   exce   create   继承   

原文地址:https://www.cnblogs.com/jianhaozhou/p/10110534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!