首页 > 其他分享 >【DRF-09】rest-framework之序列化(序列化)

【DRF-09】rest-framework之序列化(序列化)

时间:2024-06-03 21:23:45浏览次数:17  
标签:__ serializers get 09 ret framework CharField 序列化

  • 1.序列化用于对用户请求数据进行验证和数据进行序列化,本篇文章主要讲解序列化部分。

    • 1.1:序列化的意义:web有两种应用模式,一种是前后端不分离,一种是前后端分离,当前后端分离的时候,后端只需要向前端传输数据即可,不需要进行其他的操作,而restframework在前后端传输数据时,主要是json数据,过程中就要需要把其他数据转换成json数据,比如数据库查询所有数据时,是queryset对象,那就要把这对象处理成json数据返回前端,一般如果是中大型公司,都是前后端分离,这也是目前的市场规则需要.
  • 2.自定义字段

class UserInfoSerializer(serializers.Serializer):
    # 注意:source 如果是字段,会显示字段,如果是方法,会执行方法,不用加括号(authors=serializers.CharField(source='authors.all'))
    username = serializers.CharField()
    password = serializers.CharField()
    # ut = serializers.CharField(source="user_type")   # 取出来的是数字
    ut = serializers.CharField(source="get_user_type_display")  # row.get_user_type_display()
    gp = serializers.CharField(source="group.title")
    rls = serializers.SerializerMethodField()  # 自定义显示

    def get_rls(self,row):
        role_obj_list = row.roles.all()
        ret = []
        for item in role_obj_list:
            ret.append({"id":item.id,"title":item.title})
        return ret

class UserInfoView(APIView):
    def get(self,request,*args,**kwargs):
        userinfo = models.UserInfo.objects.all()
        # 1.实例化,一般是将数据封装到对象:__new__,__init__
        ser = UserInfoSerializer(instance=userinfo,many=True,context={'request': request})
        # 2.调用对象的ser.data
        ret = json.dumps(ser.data,ensure_ascii=False)
        return HttpResponse(ret)
  • 3.基于Model自动生成字段
class UserInfoSerializer(serializers.ModelSerializer):
    ut = serializers.CharField(source="get_user_type_display")
    # view_name-->>url别名,pk-->>url中的组名,group_id-->>字段名
    # group = serializers.HyperlinkedIdentityField(view_name='gp', lookup_field='group_id', lookup_url_kwarg='pk')

    class Meta:
        model = models.UserInfo
        # fields = '__all__'
        fields = ['id','ut','username','password','group','roles']
        depth = 1

class UserInfoView(APIView):
    def get(self,request,*args,**kwargs):
        userinfo = models.UserInfo.objects.all()
        # 1.实例化,一般是将数据封装到对象:__new__,__init__
        ser = UserInfoSerializer(instance=userinfo,many=True,context={'request': request})
        # 2.调用对象的ser.data
        ret = json.dumps(ser.data,ensure_ascii=False)
        return HttpResponse(ret)

标签:__,serializers,get,09,ret,framework,CharField,序列化
From: https://www.cnblogs.com/xwltest/p/18229681

相关文章

  • ABC 309 E Family and Insurance
    题意一个家庭用一颗树来表示。其中有m个人买了保险,x[i]买的保险可以继承y[i]代,请问有多少人至少有一份保险思路感觉是比较水的E题了,我们采取bfs遍历,然后类似于最短路的想法来更新每个点可以继承的最大保险代数。最后扫一遍所有人,看他们的dis有多少大于等于0,即为答案(dis最初所有......
  • Exercise 09
    Exercise09Exercise09//6:46Workingwiththem,wecreatedoneofthebestyarnsintheworld,whichconsistsofthinmetallicalloys1wrappedaroundwithpolyesterfibersandcottonfibers.Theseyarnsweremadeinthesamemachineswhichweremaking......
  • fastjson反序列化漏洞
    一题Think_java大多数师傅都是用的自己构造的java反序列化来做的。正好当时用fastjson写出来了。近些天也在挖洞,对于很多json传输的数据也会尝试一下fastjson的payload。那就正好一起来看当时如何利用fastjson的,应该是个非预期吧,其实这个虽然说是ctf题目,但环境属实和实战没......
  • PS系统教程09
    修复照片 修饰工具污点修复画笔工具(J)主要作用:去除一些污点或者不需要的【:缩小】:放大目标:去掉这两个点修复画笔工具也就是说我们要有取样点选择修复画笔工具按住Alt键吸取周边相近颜色松开单机修复地点为了效果我吸取的是牙齿的颜色。仿制图章工具与其作用一......
  • dotnet/.NET EF(Entity Framework)详解
    原文链接:https://upimg.baike.so.com/doc/6061191-6274247.html         https://blog.csdn.net/u013733643/article/details/123473628DOTNET就是.NET,严格说是:.NETFramework框架。但为什么叫DOTNET(.NET)呢?在计算机行业DOT是DistributedObjectTechnolo......
  • GM7109 150KHz,3A降压开关稳压器芯片IC
    一般描述    GM7109系列是专为降压型开关稳压器提供所有有源功能,并驱动最大负载电流高达3A的线路和负载调节(仅适用于ESOP8封装产品)。GM7109可在3.3V,5V的固定输出电压,和一个多功能可调输出版本。这些调节器使用简单,需要最少数量的外部元件。该功能包括内部频率补偿和......
  • 093、渡荆门送别
    093、渡荆门送别唐●李白渡远荆门外,来从楚国游。山随平野尽,江入大荒流。月下飞天镜,云生结海楼。仍怜故乡水,万里送行舟。 【现代诗意译】渡荆门送别从遥远的荆门外,乘船沿江东下,我来到楚国大地,准备尽兴地漫游一番。 重山消逝在无尽的平野上,长江流入荒原后也渐渐变......
  • 反序列化魔术方法
    魔术方法成员属性变量和成员属性是一个东西__consrtuct构造方法在对象实例化时执行的方法__construct()只会在new一个对象时触发,serialiaze和unserialize都不会触发__destruct()析构函数__destruct()函数只会在序列化serialize()反序列化unserialize()和销毁一个对象时触......
  • 【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)
    1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。3.欢迎批评指正,欢迎互三,跪谢一键三连!4.欢迎批评指正......
  • phar反序列化例题
    [CISCN2019华北赛区Day1Web1]Dropbox目录穿越下载注册、登录,发现可文件上传。上传文件后发现可以下载或者删除,尝试上传php马但是发现都被过滤,抓包下载的选项。发现下载可能存在目录穿越。于是尝试../../index.php,发现可成功下载。于是将download.phpdelete.php下载,审源码......