Django REST Framework的序列化器是什么?
# 转载请留言联系
用Django开发RESTful风格的API存在着很多重复的步骤。详细可见:https://www.cnblogs.com/chichung/p/9933861.html
过程往往都是,(1)把到前端请求的过来的json字符串,然后通过json.loads转换为字典,字典在转换为对象,保存在数据库。
(2)返回的时候呢,都是先把对象查询出来,然后转换为字典,再通过JsonResponse转换为json字符串并且返回给前端。
接口的开发,基本就是在重复这两个动作,而且这两个动作语句特别多,如果有一样东西可以简单地完成这两个动作就好了。还真的有,那就是Django REST Framework(简称DRF)!
DRF的环境安装与配置
安装:
pip install djangorestframework
配置:
在settings.py:
INSTALLED_APPS = [
...
'rest_framework',
]
序列化器的序列化与反序列化
那么,DRF是怎样实现这种操作的呢?就是用序列化器。
首先要明白两个概念,序列化与反序列化:
序列化:将程序中的一个数据结构类型转换为其他格式(JSON、XML等),例如:将Django中的模型类对象装换为JSON字符串,这个转换过程我们称为序列化。简单来说:
对象->字典->json反序列化:将其他格式(JSON、XML等)转换为程序中的数据,例如将JSON字符串转换为Django中的模型类对象,这个过程我们称为反序列化。简单来说:
json->字典->对象
我们开头讲的第(1)种动作,就可以用反序列化完成。第(2)种动作,就可以用序列化完成。
序列化与反序列化的作用
1.序列化的作用:
1.
对象->字典
使用Django框架查询部门数据:

用序列化查询部门数据:(简化上图的步骤2)

2.反序列化的作用:
1.
json->字典->对象2.校验参数的合法性(可以校验传过来的json转换成字典后,能否满足数据库的字段约束)
3.校验通过后,可以在数据库中保存或修改数据
使用Django框架新增或修改部门:

使用反序列化新增或修改部门:(简化上图的步骤3、4)

Django REST Framework的序列化器是什么?的更多相关文章
- Django Rest framework 之 序列化
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- Django Rest framework 之 解析器
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- DRF Django REST framework 之 解析器(二)
引入 Django Rest framework帮助我们实现了处理application/json协议请求的数据,如果不使用DRF,直接从 request.body 里面拿到原始的客户端请求的字节数据 ...
- ajax发送json格式与文件数据、django自带的序列化器(了解)
上期内容回顾 聚合查询和分组查询 # 聚合查询 max min sum avg count # 查询关键字:aggregate from django.db.models import Max, Mi ...
- 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 ...
- Django rest framework之序列化小结
最近在DRF的序列化上踩过了不少坑,特此结合官方文档记录下,方便日后查阅. [01]前言 serializers是什么?官网是这样的”Serializers allow complex d ...
- django rest framework serializers序列化
serializers是将复杂的数据结构变成json或者xml这个格式的 serializers有以下几个作用: - 将queryset与model实例等进行序列化,转化成json格式,返回给用户(a ...
- Django Rest Framework之解析器
基本代码结构 urls.py: from django.conf.urls import url, include from web.views.s5_parser import TestView u ...
随机推荐
- 指针C语言
一.PTA实验作业 题目一:6-7输出月份英文名 1.PTA提交列表 2.设计思路和流程图 这题只需补充子函数,定义指针数组month[12],分别从一月到十二月,再定义一个字符,让它为NULL,当输 ...
- CentOS7 php 安装 amqp扩展
继续安装完 rabbitmq后,安装最新 php amqp扩展 http://www.cnblogs.com/8000cabbage/p/7788575.html 参考:carson 1.安装rabb ...
- CentOS7 最小化安装vmware-tools
花了一上午的时间在1611上安装vmware-tool,总不能全部顺利安装成功 结合网上资料,整理出正确流程 下载最新的CentOS-7-x86_64-Minimal-1708 安装之后 联网 yum ...
- linux系统基础文件属性
记录用户登录前显示的信息 cat /etc/issue vim /etc/motd 设置登录提醒 隐藏执行命令的历史记录用history –d 加上历史记录行号 如history -d 38 ...
- microtime()
PHP函数microtime()返回当前 Unix 时间戳和微秒数.
- 算法(5)Jump Game
题目:非负数的数组,每个数组元素代表这你能最大跨越多少步,初始在0的位置,问,能不能正好调到数组的最后一位! https://leetcode.com/problems/jump-game/#/des ...
- js阻止冒泡事件和默认事件的方法
阻止默认事件 function stopDeFault(e){ if(e&&e.preventDefault){//非IE e.preventDefault(); }else{//IE ...
- C#中多态
我的理解是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态. 1: OverRide 实现多态 public class Animal { public virtual void ...
- ARC075 E.Meaningful Mean(树状数组)
题目大意:给定n和k,问an中有多少子区间的平均值大于等于k 很巧妙的一个式子,就是如果一个区间[l, r]满足条件 那么则有 sum[r] - sum[l-1] >= (r-l+1)*k 整理 ...
- 【题解】JLOI2015战争调度
搜索+状压+DP. 注意到一个性质:考虑一棵以x为根的子树,在x到原树的根的路径上的点如果都已经确定了方案,那么x的左右儿子的决策就彼此独立,互不影响了.所以我们考虑状压一条路径上每一层节点的状态,求 ...