序列化组件

一:序列化组件

  1:Django自带序列化组件(非常难用)

  2:rest_framework序列化之Serializer

    写一个头,继承Serializer

    在类中写要序列化的字段

    在View.py中使用:

      book_ser=BookSerializer(book_list,many=True)

      book_ser.data ----就是序列化后的数据

    source有三种使用方法:1,指定字段、2,指定方法、3,深度查询(跨表)

                       

  注意:SerializerMethodField,必须配合方法使用 get_字段名(self,obj), obj是什么?当前要序列化的对象。SerializerMethodField对应的方法中还可以继续使用其他的序列化类。

  3:rest_framework序列化之ModelSerializer

  写一个类继承ModelSerializer,在类的内部写:

class Meta:
    model=models.Book
    fields='__all__'
    # exclude=['name','price']
    depth=1
#重写属性

  4:查询单本书

  books/1,序列化单条数据:book_ser=BookSerializer(instance=book,many=False)

  注意book:不是queryset对象,是book对象

  5:新增一本书

  /books/ ——发送post请求,携带json格式数据

  6:反序列化之局部,全局钩子(序列化的类一定继承ModelSerializer的类)

            def validate_name(self,value):
                if value.startswith('sb'):
                    #不能让你过
                    raise ValidationError('书名不能以sb开头')
                else:
                    return value

            #全局钩子函数,对全局字段进行校验
            def validate(self,a):
                # print(a)
                name=a.get('name')
                price=a.get('price')
                if name != price:
                    raise ValidationError('错了')
                else:
                    return a

另附:json在线格式化:https://www.json.cn/

 

posted @ 2019-03-26 16:35  刘小鹿  阅读(211)  评论(0编辑  收藏  举报