rest_framework-序列化-总结完结篇
#rest_framework 序列化
from rest_framework import serializers #serilizers.Serializer serializers.ModelSerializer 两种序列化方式 class RolesSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField() class RolesView(APIView):
def get(self, request, *args, **kwargs):
#方式1
#roles = models.Role.objects.all().values('id','title')
#roles = list(roles)
#ret = json.dumps(roles, ensure_ascii=False) #方式2-
roles = models.Role.objects.all()
ser = RolesSerializer(instance=roles, many=True)
ret = json.dumps(ser.data, ensure_ascii=False)
return HttpResponse(ret) #方式2-
roles = models.Role.objects.all().first()
ser = RolesSerializer(instance=roles, many=False)
ret = json.dumps(ser.data, ensure_ascii=False)
return HttpResponse(ret) class UserInfoSerializer(serializers.Serializer):
username = serializer.CharField()
password = serializer.CharField()
user_type = serializer.IntegerField() #user_type = serializer.Charield(source="get_user_type_display") #找到每一行的对象 row.user_type
# row.get_user_type_display 就可以对choices进行层级的字符
#可执行 gp = serializers.CharField(source="group.title") #外键group关联Group表,通过.获取Group表字段参数
#显示 [{"username":"ljc", "password":"", "user_type":"VIP", "gp":"A组"}] #多对多 manytomany 不能通过source 通过serializers.SerializerMethodField()
roles = serializers.SerializerMethodField() #自定义显示
def get_roles(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):
users = models.UserInfo.objects.all()
ser = UserInfoSerializer(instance=users, many=True)
ret = json.dumps(ser.data, ensure_ascii=False) return HttpResponse(ret) #方式3
class UserInfoSerializer(serializers.ModelSerializer):
user_type = serializer.Charield(source="get_user_type_display") #混合使用 roles = serializers.SerializerMethodField() #自定义显示
class Meta:
model = models.UserInfo
#fields = "__all__" 全部自动生成
#fields = ['id', 'username', 'password'] #自定义
#fields = ['id', 'username', 'password', 'user_type']
fields = ['roles'] #复杂的 def get_roles(self, row): role_obj_list = row.roles.all() #获取角色对象
ret = []
for item in role_obj_list:
ret.append({'id':item.id, 'title':item.title}) class UserInfoView(APIView):
def get(self, request, *args, **kwargs):
users = models.UserInfo.objects.all()
ser = UserInfoSerializer(instance=users, many=True)
ret = json.dumps(ser.data, ensure_ascii=False) return HttpResponse(ret) #小清新版
class UserInfoSerializer(serializers.ModelSerializer):
class Meta:
model = models.UesrInfo
fields = "__all__"
depth = #这个就可以将所有的数据都显示了 默认为0 只是关联本表的数据 depth最好0-4层就好了
#表与表之间的manytomany onetoone foreignkey 表示一层 第二个表再关联 就2层 连表操作
class UserInfoView(APIView):
def get(self, request, *args, **kwargs): users = models.UserInfo.objects.all()
ser = UserInfoSerializer(instance=users, many=True) ret - json.dumps(ser.data, ensure_ascii=False) #ensure_ascii=False 显示中文
return HttpResponse(ret)
rest_framework-序列化-总结完结篇的更多相关文章
- 不就是抽个血吗,至于么-jQuery,Linux完结篇
hi 趁着周一去抽血化验,真开心...下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话.....至于么.. 还有在教研室的30天就可以肥家了,凯森凯森.今天不想干活(哪天想干过我就问问), ...
- ASP.NET 5系列教程(七)完结篇-解读代码
在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]") ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- Java工程师学习指南 完结篇
Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...
- Java工程师学习指南(完结篇)
Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...
- 解剖SQLSERVER 完结篇 关于Internals Viewer源代码
解剖SQLSERVER 完结篇 关于Internals Viewer源代码 大家可能都用过Internals Viewer这个软件 <查看SQLSERVER内部数据页面的小插件Internals ...
- (视频)《快速创建网站》 4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术
本文是<快速创建网站>系列的第10篇(完结篇),如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文.访问本系列目录,请点击:http://devopshub.c ...
- 直接拿来用!最火的Android开源项目(完结篇)
直接拿来用!最火的Android开源项目(完结篇) 2014-01-06 19:59 4785人阅读 评论(1) 收藏 举报 分类: android 高手进阶教程(100) 摘要:截至目前,在GitH ...
- Android 实现书籍翻页效果----完结篇
By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 之前由于种种琐事,暂停了这个翻页效果的实现,终于在这周末完成了大部分功能,但是这里只是给出了一个基本的雏形,没有添 ...
- 《BackboneJS框架的技巧及模式》(4)完结篇
<BackboneJS框架的技巧及模式>(4)完结篇 本文紧接第二部分:<BackboneJS框架的技巧及模式(3)> 作者:chszs,转载需注明.博客主页:http://b ...
随机推荐
- [Angular] Read Custom HTTP Headers Sent by the Server in Angular
By default the response body doesn’t contain all the data that might be needed in your app. Your ser ...
- cmd 下命令
tasklist 查看当前进程 taskkill /? 查看taskkill 的帮助信息 详情 cmd /? 查看cmd详情 color /? 查看颜色详情 比如 color 2 md d:\ji ...
- 我是怎么从项目中的lib加JAR更换为maven管理的
原来我对maven的使用应该还是去年的时候吧,当时对maven并不感冒(请不要吐槽哈),认为为什么一定要用maven来管理呢,我自己管理jar不是一样么,当时还认为自己管理jar还各种方便还对mave ...
- nodeJS npm grunt grunt-cli
1.安装好nodeJS后 ,一般都会把npm也安装好的.nodeJs集成npm的,可通过在cmd 分别运行 node -v和 npm -v来查看他们的版本,假设显示可说明可继续以下的操作 2.想安装g ...
- SICP 习题 (1.41)解题总结
SICP 习题1.41 看似和周边的题目没有关系,突然叫我们去定义一个叫double的过程,事实上这道题的核心还是高阶函数. 题目要求我们定义一个过程double,它以一个过程作为參数,这个作为參数的 ...
- vuex3
以下是一个表示“单向数据流”理念的极简示意: 但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏: 多个视图依赖于同一状态. 来自不同视图的行为需要变更同一状态. 这就是 Vue ...
- GitHub客户端和Shell的基本操作和理解
GitHub客户端和Shell指令的简单实用 客户端操作, web端操作, shell指令操作. 掌握了这三种操作,基本上就可以很好的运用gitHub了. 创建项目, 可以通过web端进行创建. 可以 ...
- 读取XML字符串到临时表
DECLARE @hdoc int DECLARE @doc xml SET @doc = '<CityValueSet> <CityItem> <CityId>2 ...
- 初识Git(一)
以前经常听到Git,作为一个菜鸟级自学选手从没有真正去了解Git,借刘铁猛老师在油管上的<对答如刘>初步认识了git,作以下记录. 1.初始化一个git管理的文件夹 首先我在我的电脑C盘P ...
- 3ds Max制作厨房贴图和纹理实例
来源:CG游 使用软件:3ds Max 软件下载:www.xy3dsmax.com/xiazai.html 大家好,欢迎大家来阅读这个教程.这个教程是讲解我前不久制作的一个场景效果图.因为场景已经制作 ...