• 序列化组件


    一:序列化组件

      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/

  • 相关阅读:
    点击回到顶部
    rem根据屏幕大小适配字体大小
    使用layui-tree美化左侧菜单,点击生成tab选项
    字符串
    mysql ORDER BY field(STATUS, 0,1) 根据字段特定排序问题
    js防止短时间内重复点击
    tp5 where a and (b or c)
    array_diff遇到的坑
    前端开发必配置:html5shiv.js和respond.min.js的作用说明!
    phpmailer QQ邮件发送
  • 原文地址:https://www.cnblogs.com/liuxiaolu/p/10601089.html
Copyright © 2020-2023  润新知