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 ...
随机推荐
- 如何卸载oracle11g
方法/步骤 .关闭oracle所有的服务.可以在windows的服务管理器中关闭: 打开注册表:regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo ...
- python将py文件转换为pyc
python -m py_compile lib/ylpy.py python -m py_compile lib/ylpy.py python 一个.py文件如何调用另一个.py文件中的类和函数 A ...
- ArcGIS超级工具SPTOOLS-SHP转数据库,批量数据库转数据库,栅格彩色转黑白
1.1 SHP转数据库 把一个文件夹的数据,转到数据库,或者另一个文件夹,不含字文件夹 1.2 批量数据库转数据库 把一个文件夹下GDB或者MDB,转到另一个文件夹为MDB,GDB,并实现版本的转 ...
- Python全国二级等级考试(2019)
一.前言 2018年9月随着全国计算机等级考试科目中加入“二级Python”,也确立了Python在国内的地位,猪哥相信Python语言势必会像PS那般普及.不久的将来,谁会Python谁就能获得女神 ...
- word里快捷输入分割线
- ubuntu docker 环境安装
转载:https://www.cnblogs.com/blog-rui/p/9946382.html 1. 在Ubuntu中安装Docker 更新ubuntu的apt源索引 sudo apt-get ...
- python3 super().__init__() 和 __init__() 的区别
1.单继承 super().__int__()和 Base.__init__(self)是一样的, super()避免了基类的显式调用. class Base(object): def __init_ ...
- Excel转html工具类
有时需要将Excel展示在页面上,所以需要将Excel转化为html,这里封装一个工具类. Excel和servlet访问效果如下图示: 工具类代码: POIReadExcelToHtmlUtil.j ...
- asp.net mvc 中Html.ValidationSummary显示html
@if (!ViewData.ModelState.IsValid) { <div>@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationSumm ...
- 安装“Microsoft SQL Server 2014 Management Objects”时报错"Error Writing to file: Microsoft.SqlServer.XEvent.Linq.dll."
问题: 当安装的软件依赖Microsoft SQL Server 2014 Management Objects时,会把这个组件打进安装包里,但是在服务器上安装时却报如下错误: “Error Writ ...