drf——Serializer的反序列化、字段与参数、局部与全局钩子、ModelSerializer使用、子序列化

系列文章目录

drf
第一章 django web开发模式、api接口、api接口测试工具、restful规范、序列化反序列化、drf安装使用

第二章 drf的使用、APIView源码分析、Request源码分析、Serializer的序列化

第三章 Serializer的反序列化、字段与参数、局部与全局钩子、ModelSerializer使用



一、Serializer的反序列化

使用serializer序列化器时,反序列化一般针对update和create,所以如果有对应表主键时最好为其设置read_only为True

表中无外键关系时可以使用serializer或者ModelSerializer
此处展示Serializer使用方式
表关系:

	
	class Book(models.Model):
    bname = models.CharField(max_length=20, verbose_name='书籍名称')
    price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='书籍单价')

    def __str__(self):
        return self.bname

对应的Serializer序列化器
针对于Serializer创建与更新方法需要重写,删除、查询、查询单个需要在视图类中完成

	
	class BookSerializer(serializers.Serializer):
    bname = serializers.CharField(max_length=20)
    price = serializers.DecimalField(max_digits=5, decimal_places=2)
	
    def update(self, instance, validated_data):
        instance.bname = validated_data.get('bname')
        instance.price = validated_data.get('price')
        instance.save()
        return instance

    def create(self, validated_data):
        book_obj = Book.objects.create(**validated_data)
        return book_obj

对应视图类

	class BookApiView(views.APIView):

    def get(self,request):
        dict = {
   {
   'code':200, 'msg':'查询成功成功'}}
        if not request.query_params:
            books = Book.objects.all()
            dict['msg'] = '查询全部书籍成功'
        else :
            books = Book.objects.filter(pk=request.query_params.get('id'))
            dict['msg'] = '查询一本书籍成功'
        bookSerializer = BookSerializer(instance=books, many=True)
        dict['data'] = bookSerializer.data
        return Response(dict)

    def delete(self,request):
        dict = {
   'code':200}
        pk = request.data.get('id')
        if pk:
            book_obj = Book.objects.filter(pk=pk)
            if book_obj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值