序列化:

第一版:
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. Linux下nginx配置https协议访问

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  2. Jetson TK下如何写汇编语言

    首先,可以根据http://www.cnblogs.com/zenny-chen/p/3816620.html来安装CUDA工具链.这个工具集里包含了CUDA编译器以及其它必要的工具.然后,我们进入/ ...

  3. Java动态修改运行环境

    1.pom.xml直接添加一下配置 <profiles> <profile> <id>dev</id> <properties> <a ...

  4. vscode使用Chrome浏览器调试不好用,解决方法!!

    1.如果你是刚下载vscode,那么你需要下载两个插件. 1. open in browser(在浏览器中查看,支持五大主流浏览器),下载并启用. 2. view-in-browser (在浏览器中查 ...

  5. 分布式消息通信之RabbitMQ_01

    目录 官网 1. RabbitMQ安装 1.1 Window版安装 1.2 Linux版安装 2. 典型应用场景 3. 基本介绍 3.1 AMQP协议 3.2 RabbitMQ的特性 3.3 工作模型 ...

  6. 《剑指offer》数组专题 (牛客10.22)

    目录 // Q01 二维部分有序数组查找 [善用性质] // Q06 旋转数组中的最小元素 [二分 || 暴力] Q13 调整数组顺序使奇数位于偶数前 / Q19 顺时针打印矩阵 [使用边界变量] / ...

  7. FMZ发明者量化平台回测机制说明

    原文连接:https://www.fmz.com/digest-topic/4009 大部分策略在实盘之前都需要回测进行验证,FMZ支持部分品种数字货币现货.期货和永续合约,以及商品期货所有品种.但发 ...

  8. 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别

    ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...

  9. 最新 人民网java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.人民网等10家互联网公司的校招Offer,因为某些自身原因最终选择了人民网.6.7月主要是做系统复习.项目复盘.LeetCo ...

  10. c# dateTime格式转换为Unix时间戳工具类

    using System; using System.Collections.Generic; using System.Text; namespace TJCFinanceWriteOff.BizL ...