序列化:

第一版:
class RolesView(APIView):
def get(self,request,*args,**kwargs):
roles = models.Role.objects.all().values('id','title')
roles = list(roles)
#利用json.dumps将数据转换成json格式
ret = json.dumps(roles,ensure_ascii=False)
return HttpResponse(ret) 第二版:
from rest_framework import serializers class RloesSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField() class RolesView(APIView):
def get(self,request,*args,**kwargs):
方式一:对于[obj,obj,obj,]
roles = models.Role.objects.all()
ser = RloesSerializer(instance=roles, many=True) #多个对象 方式二:对于[obj,obj,obj,]
roles = models.Role.objects.all().first()
ser = RloesSerializer(instance=roles, many=False) #单个对象或数据 ret = json.dumps(ser.data,ensure_ascii=False)
return HttpResponse(ret) 第三版:
from rest_framework import serializers class UserInfoSerializer(serializers.Serializer):
# source是印射models里面的表的字段名
user_type = serializers.CharField(source='user_type')
# 如果字段时choices字段 可以使用source='get_字段名_display' 来显示中文
user_type_zhongwen = serializers.CharField(source='get_user_type_display')
username = serializers.CharField()
password = serializers.CharField()
#如果字段是一个Forenighkey那么可以使用 字段名加点来关联其他表的字段
gpid = serializers.CharField(source='group.id')
#如果字段是一个ManyToMany那么可以使用 字段名加点来关联所有字段
rls = serializers.CharField(source='roles.all')
#自定义显示
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):
roles = models.UserInfo.objects.all()
ser = UserInfoSerializer(instance=roles, many=True) #多个对象 ret = json.dumps(ser.data,ensure_ascii=False)
return HttpResponse(ret)

  

第四版:
from rest_framework import serializers class UserInfoSerializer(serializers.ModelSerializer):
#反向生成url 根据路由 url(r^(?P<version>[v1|v2]+)/group/(?P<pk>\d+)$, view.UserInfoView.as_view(),'gp')
group = serializers.HyperlinkedIdentityField(view_name='gp',lookup_field='group_id',lookup_url_kwarg='pk')
user_type_zhongwen = serializers.CharField(source='get_user_type_display')
class Meta:
model = models.UserInfo
# 显示UserInfo全部字段
fields = "__all__"
# 可以自定义字段
fields = ['id','username','password','user_type_zhongwen',]
          #默认是0,大于等于1时 就会把字段的相关的Forengishkey或者ManyToMany或者OneToOne
#建议不要超过3 (0-10)
depth = 1 class UserInfoView(APIView):
def get(self,request,*args,**kwargs):
roles = models.UserInfo.objects.all()
ser = UserInfoSerializer(instance=roles, many=True) #多个对象 ret = json.dumps(ser.data,ensure_ascii=False)
return HttpResponse(ret)

  

使用第四版

1. 继承 serializers.ModelSerializer

2. class Meta:

model = models.<表名>

fields = "__all__"

3. 可以自定义字段  fields = ['id','username','password','user_type_zhongwen',]

4. depth = 1  #默认是0,大于等于1时 就会把字段的相关的Forengishkey或者ManyToMany或者OneToOne

Django rest-framework框架-序列化的更多相关文章

  1. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

  2. Django REST framework框架介绍和基本使用

    Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...

  3. Django Rest framework 框架之认证使用和源码执行流程

    用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...

  4. Django Rest framework 之 序列化

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  5. Django Rest Framework框架 ---- url控制器

    Django Rest Framework框架 ---- url控制器

  6. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  7. Django REST Framework的序列化器是什么?

    # 转载请留言联系 用Django开发RESTful风格的API存在着很多重复的步骤.详细可见:https://www.cnblogs.com/chichung/p/9933861.html 过程往往 ...

  8. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

  9. Django Rest Framework(2)-----序列化详解(serializers)

    REST framework中的序列化类与Django的Form和ModelForm类非常相似.我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSe ...

  10. Django restful Framework 之序列化与反序列化

    1. 首先在已建好的工程目录下新建app命名为snippets,并将snippets app以及rest_framework app加到工程目录的 INSTALLED_APPS 中去,具体如下: IN ...

随机推荐

  1. 使用Vagrant配置本地开发环境

    从二零一四年开始使用vagrant+VirtualBox搭建linux开发环境,配置简单灵活,后台运行占用内存少,比vmware好用很多,果断弃用vmware转投vagrant的怀抱:无论是个人搭建开 ...

  2. jmeter-移动端接口测试中遇到的问题,http与https

    解决:将请求默认值的http改成https

  3. SQL-W3School-高级:SQL INNER JOIN 关键字

    ylbtech-SQL-W3School-高级:SQL INNER JOIN 关键字 1.返回顶部 1. SQL INNER JOIN 关键字 在表中存在至少一个匹配时,INNER JOIN 关键字返 ...

  4. ajax结合mysql数据库和smarty实现局部数据状态的刷新

    效果状态:通过点击锁定状态实现状态锁定与不锁定之间的切换 1.主程序:01.php导入smarty和mysql类,取得数据导入列表模板 <?php    include './include/M ...

  5. 虚拟化技术实现 — KVM 的 CPU 虚拟化

    目录 文章目录 目录 前文列表 x86 体系结构的虚拟化 硬件辅助的 CPU 虚拟化 由 VMX 切换支撑的 CPU 虚拟化技术 KVM 的 CPU 虚拟化实现 vCPU 的调度方式 客户机 CPU ...

  6. OpenStack Manila发展动态系列--Austin峰会

    1 Manila Mitaka版本概述 在Austin峰会上介绍到,Manila Mitaka发布版本Driver个数达到了18个, M版本新加入14家公司(中国公司继华为之后又有99cloud等公司 ...

  7. Vue的基础学习

    一.Vue的计算属性:get和set属性 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. linux扩展根目录空间

    转自:http://blog.chinaunix.net/uid-363820-id-2181838.html Linux用户如何扩展磁盘空间? 这里以B型VPS为例,说明磁盘空间的具体扩展方法如下: ...

  9. CockroachDB学习笔记——[译]Cgo的成本与复杂性

    原文链接:https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ 原作者:Tobias Schottdorf 原文日期:D ...

  10. 【error】 for i in range(len(shape)/2): TypeError: 'float' object cannot be interpreted as an integer

    Q: for i in range(len(shape)/2):TypeError: 'float' object cannot be interpreted as an integer A: for ...