Django rest-framework框架-序列化
序列化: 第一版:
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框架-序列化的更多相关文章
- web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝
web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...
- Django REST framework框架介绍和基本使用
Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...
- Django Rest framework 框架之认证使用和源码执行流程
用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...
- Django Rest framework 之 序列化
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- Django Rest Framework框架 ---- url控制器
Django Rest Framework框架 ---- url控制器
- web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍
web前端Vue+Django rest framework 框架 生鲜电商项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...
- Django REST Framework的序列化器是什么?
# 转载请留言联系 用Django开发RESTful风格的API存在着很多重复的步骤.详细可见:https://www.cnblogs.com/chichung/p/9933861.html 过程往往 ...
- Django Rest framework 框架
一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...
- Django Rest Framework(2)-----序列化详解(serializers)
REST framework中的序列化类与Django的Form和ModelForm类非常相似.我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSe ...
- Django restful Framework 之序列化与反序列化
1. 首先在已建好的工程目录下新建app命名为snippets,并将snippets app以及rest_framework app加到工程目录的 INSTALLED_APPS 中去,具体如下: IN ...
随机推荐
- 如何隐藏EFI分区?
U盘制作PE 后多了个EFI分区, 傲梅分区助手,,里面可以进行隐藏分区 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- SQL中instr和like的使用区别
1.instr函数 instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0. instr函数定义如下: /* * 返回子 ...
- win系统动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
- Swift 数据类型
Swift 提供了非常丰富的数据类型,以下列出了常用了几种数据类型: Int 一般来说,你不需要专门指定整数的长度.Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同: 在32位 ...
- List的remove方法里的坑
今天遇到一件怪事,用一个ArrayList添加了一个对象,再调用ArrayList的remove方法删除该对象,当然这时对象是数据库里查出来的,但内容绝对是一样,却发现remove失败了.演示一下,这 ...
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_13-删除页面-前端-Api调用
增加删除链接 <el-button size="small" type="text" @click="del(page.row.pageId)& ...
- win7上 nginx 出现 403 Forbidden
一般是目录权限问题,在conf文件找到 location / { index index.html index.htm index.php;# autoindex on; } 把#去掉就可以了.
- MySQL 查询某个数据库中所有包含数据记录的表名
MySQL 查询某个数据库中所有包含数据记录的表名 有时根据实际应用需要,需要对数据进行备份. 如果一个数据库中有很多数据表,但是只想备份包含数据记录的那些表数据(空表不做数据备份). 如果通过如下S ...
- 生命周期和Zend引擎
一切的开始:SAPI接口 SAPI(Server Application Programming Interface)指的是具体应用的编程接口.PHP脚本要执行有很多种方式,通过web服务器,或者直接 ...
- Spring Aop(十一)——编程式的创建Aop代理之ProxyFactory
转发地址:https://www.iteye.com/blog/elim-2397388 编程式的创建Aop代理之ProxyFactory Spring Aop是基于代理的,ProxyFactory是 ...