Django:前后端分离 djangorestframework开发API接口 serializer序列化认证组件
参考:https://blog.csdn.net/zhangmengran/article/details/84887206
目的:
使用serializer序列化器将QuerySet数据序列化为json数据,用django restframework开发后端接口将此json数据返回
serializer序列化
1.主要是序列化数据,将QuerySet集合中的ORM对象序列化成json字符串,作为接口数据返回(json格式)
一、编写models.py
from django.db import models class Sonar(models.Model):
""" """
project = models.CharField(max_length=20)
bugs = models.CharField(max_length=10)
vulnerability = models.CharField(max_length=10)
issue_count = models.CharField(max_length=10)
issue_url = models.CharField(max_length=200) def __str__(self):
return self.project
二、在utils包下的serializer.py文件中自定义一个类
from rest_framework import serializers class SonarSerializer(serializers.Serializer):
# 要定义需要序列化的字段,注意:这里定义的字段的值必须和models.py中的字段保持一致,将models换为serializers就行
project = serializers.CharField(max_length=20)
bugs = serializers.CharField(max_length=10)
vulnerability = serializers.CharField(max_length=10)
issue_count = serializers.CharField(max_length=10)
issue_url = serializers.CharField(max_length=200)
三、然后编写视图类views.py
from django.shortcuts import render
from rest_framework.views import APIView
from util.serializer import SonarSerializer
from rest_framework.response import Response
from sonar.models import Sonar class SonarCount(APIView): def get(self, request, *args, **kwargs):
# 查询出所有的数据,为QuerySet格式
sonar = Sonar.objects.all()
total = sonar.count()
# 参数:1.instance需要序列化的对象 2.是一个对象还是多个对象,如果是多个必须设置many=True
serializer = SonarSerializer(instance=sonar, many=True)
# 返回最终的json数据serializer.data
return Response({"status": "success", "total": total, "rows":serializer.data})
四、最后设置路由:
from django.conf.urls import url
from sonar.views import SonarCount urlpatterns = [
url(r'^sonarCount/', SonarCount.as_view()),
]
post测试一下

优化:优化一下视图类
from rest_framework.views import APIView
from util.serializer import SonarSerializer
from rest_framework.response import Response
from sonar.models import Sonar class SonarCount(APIView): def post(self, request, *args, **kwargs):
# 没有传递入参时会报KeyErrore,将此异常捕获
try:
query = request.data['id']
except:
# 捕获后置为None
query=None
# 如果query值存在则查询对应的数据
if query:
sonar = Sonar.objects.filter(id=query)
else:
# 不存在则默认查询所有数据
sonar = Sonar.objects.all()
# 获取总条数
total = sonar.count()
# 参数:1.instance需要序列化的对象 2.是一个对象还是多个对象,如果是多个必须设置many=True
serializer = SonarSerializer(instance=sonar, many=True)
# 返回最终的json数据serializer.data,根据需要对返回的json略作修改
return Response({"status": "success", "total": total, "rows": serializer.data})
测试:
1、传递参数时,返回对应的数据

2、不传递入参时,返回全部数据

以上只是单表数据的序列化,下面看看序列化多表(一对多、多对多)
参考:https://blog.csdn.net/zhangmengran/article/details/84887206
Django:前后端分离 djangorestframework开发API接口 serializer序列化认证组件的更多相关文章
- 前后端分离djangorestframework—— 在线视频平台接入第三方加密防盗录视频
加密视频 在以后的开发项目中,很可能有做在线视频的,而在线视频就有个问题,因为在线播放,就很有可能视频数据被抓包,如果这个在线视频平台有付费视频的话,这样就会有人做点倒卖视频的生意了,针对这个问题,目 ...
- 从零开始搭建django前后端分离项目 系列一(技术选型)
前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以 ...
- 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境
前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...
- 前后端分离djangorestframework—— 接入第三方的验证码平台
关于验证码部分,在我这篇文章里说的挺详细的了:Python高级应用(3)—— 为你的项目添加验证码 这里还是再给一个前后端分离的实例,因为极验官网给的是用session作为验证的,而我们做前后端分离的 ...
- [django]前后端分离之JWT用户认证
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- 前后端分离djangorestframework——分页组件
Pagination 为什么要分页也不用多说了,大家都懂,DRF也自带了分页组件 这次用 前后端分离djangorestframework——序列化与反序列化数据 文章里用到的数据,数据库用的my ...
- 前后端分离djangorestframework——视图组件
CBV与FBV CBV之前说过就是在view.py里写视图类,在序列化时用过,FBV就是常用的视图函数,两者的功能都可以实现功能,但是在restful规范方面的话,CBV更方便,FBV还要用reque ...
- 前后端分离djangorestframework——路由组件
在文章前后端分离djangorestframework——视图组件 中,见识了DRF的视图组件强大,其实里面那个url也是可以自动生成的,就是这么屌 DefaultRouter urls文件作如下调整 ...
- 前后端分离djangorestframework——序列化与反序列化数据
我们写好后端的代码,要把数据交给前端的展示的,这个数据以什么类型给前端呢?学到这里,我们已经知道这个数据最好是json字符串才行,因为网络间的传输,只认字符串或者二进制,字符串就是我们的数据,二进制就 ...
随机推荐
- Bootstrap框架简介
Bootstrap是Twitter公司(www. twitter.com)开发的一个基于HTML , CSS , JavaScript的技术框架,符合HTML和 CSS规范,且代码简洁.视觉优美.该框 ...
- KVM-virsh常用命令
virsh list #在线VM virsh list --all #所有VM virsh start #开机 virsh shutdown #软关机 virsh destroy #强制关机 virs ...
- npm run dev 报错 iview TypeError [ERR_INVALID_CALLBACK]: Callback must be a function
运行npm run dev报这个错 然后找到 D:\text\vue\iview-admin\build\webpack.dev.config.js打开 将这一行代码: fs.write(fd, bu ...
- jsp之大文件分段上传、断点续传
1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...
- pgloader 学习(四)一些简单操作例子
上边已经说明了pgloader 的基本使用(篇理论),但是对于实际操作偏少,以下是一个简单的操作 不像官方文档那样,我为了方便,直接使用docker-compose 运行,同时这个环境,会在后边大部分 ...
- Python 下载超大文件
使用python下载超大文件, 直接全部下载, 文件过大, 可能会造成内存不足, 这时候要使用requests 的 stream模式, 主要代码如下 iter_content:一块一块的遍历要下载的内 ...
- 56、Spark Streaming: transform以及实时黑名单过滤案例实战
一.transform以及实时黑名单过滤案例实战 1.概述 transform操作,应用在DStream上时,可以用于执行任意的RDD到RDD的转换操作.它可以用于实现,DStream API中所没有 ...
- 3D数据采集和重建
3D数据采集和重建是从传感器数据生成三维或时空模型.一般而言,这些技术和理论适用于大多数或所有传感器类型,包括光学,声学,激光扫描,[1]雷达,热学,[2]地震.[3][4] 内容 · ...
- Vue.js2.5+cube-ui重构饿了么App*下载
第1章 课程导学 第2章 项目准备工作 第3章 头部组件开发 第4章 Tab 组件开发 第5章 商品页面开发 第6章 商品详情页开发 第7章 评价和商家页面开发 第8章 create-api 原理分析 ...
- zookeeper、hbase集成kerberos
1.KDC创建principal 1.1.创建认证用户 登陆到kdc服务器,使用root或者可以使用root权限的普通用户操作: # kadmin.local -q “addprinc -randke ...