DRF框架之序列化器初体验
首先,我们需要明白序列化和反序列化的过程指的是什么。
序列化操作:将模型数据 ---> 字典数据 --->JSON数据(响应JSON数据的操作)
反序列化操作:将JSON数据 ---> 字典数据 ---> 校验通过的字典数据 --->模型数据(添加、修改数据的操作)
接下来,我们将学习DRF框架,通过DRF框架来提高我们开发API的效率。
什么是DRF框架?
Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。
通常简称为DRF框架 或 REST framework。
DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。
DRF框架的特点是什么?
- 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;
- 提供了丰富的类视图、Mixin扩展类,简化视图的编写;
- 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
- 多种身份认证和权限认证方式的支持;
- 内置了限流系统;
- 直观的 API web 界面;
- 可扩展性,插件丰富
为什么要学习DRF框架?
通过昨天开发的REST API程序,我们也了解到了使用原生的Django框架想要完成序列化和反序列化的代码编写有多么麻烦。
然而,DRF框架为我们将序列化和反序列化的操作进行了高度的封装,我们不再需要关心API是如何序列化和反序列化数据的,我们只需要调用相应的方法即可完成数据之间的序列化操作和反序列化的操作。
DRF框架的安装与配置
1. 安装DRF框架模块
pip install djangorestframework
2. 配置DRF框架
INSTALLED_APPS = [
...
'rest_framework', # DRF子应用
]
当我们安装完成DRF框架模块后,想要在Django程序中使用DRF框架,需要在配置文件中进行注册子应用。
当我们,完成以上两步操作后,就可以开始使用DRF框架开发API了。
DRF框架开发之初体验程序:
1. 我们要在,使用序列化操作的子应用中创建一个名字为serializers.py的文件,用于保存该应用的序列化器。
class BookInfoSerializer(serializers.ModelSerializer):
'''图书数据序列化器'''
class Meta:
# 设置需要序列化的模型类
model = BookInfo # 设置需要序列化的模型字段
fields = '__all__' # __all__:所有字段
2. 我们要,定义一个视图即接口(API)。
from rest_framework.viewsets import ModelViewSet from booktest.models import BookInfo
from booktest.serializers import BookInfoSerializer class BookInfoViewSet(ModelViewSet):
'''使用序列化器的图书信息视图'''
# 设置查询集
queryset = BookInfo.objects.all()
# 设置序列化器
serializer_class = BookInfoSerializer
3. 我们要,定义路由信息。
from django.conf.urls import url
from rest_framework.routers import DefaultRouter from booktest import views urlpatterns = [ ] # 定义一个序列化器的路由器
router = DefaultRouter() # 将序列化器的视图进行注册
router.register(r'books', views.BookInfoViewSet) # 将注册后的序列化器添加到路由中
urlpatterns += router.urls
通过,这次体验,是不是发现DRF框架的方便之处了呢?
接下来,我们就要进行系统的学习DRF框架了。
DRF框架之序列化器初体验的更多相关文章
- DRF中的序列化器
DRF中的序列化器详细应用 视图的功能:说白了就是接收前端请求,进行数据处理 (这里的处理包括:如果前端是GET请求,则构造查询集,将结果返回,这个过程为序列化:如果前端是POST请求,假如要对数 ...
- 【DRF框架】序列化组件
DRF框架的序列化组件 在前后端分离的应用模式中,后端仅返回前端所需的数据,返回的数据类似是JSON,因此需要使用序列化组件进行序列化再将数据返回 使用JsonResponse做序列化 # 使用Js ...
- 经历了源码的痛苦,掌握DRF的核心序列化器
目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...
- Python+Flask+Gunicorn 项目实战(一) 从零开始,写一个Markdown解析器 —— 初体验
(一)前言 在开始学习之前,你需要确保你对Python, JavaScript, HTML, Markdown语法有非常基础的了解.项目的源码你可以在 https://github.com/zhu-y ...
- DRF项目之序列化器和视图重写方法的区别
我们,都知道,DRF框架是一款高度封装的框架. 我们可以通过重写一些方法来实现自定义的功能. 今天,就来说说在视图中重写和序列化器中重写方法的区别. 在视图中重写方法: 接收请求,处理数据(业务逻辑) ...
- Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验
Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...
- 【DRF框架】序列化组件——ModelSerializer
ModelSerializer 1.ModelSerializer类似于ModelForm 2.根据模型自动生成一组字段 3.自带实现了.update()以及.create()方法 ModelSeri ...
- 【DRF框架】序列化组件——字段验证
单个字段的验证 1.在序列化器里定义校验字段的钩子方法 validate_字段 2.获取字段的数据 3.验证不通过,抛出异常 raise serializers.ValidationError( ...
- Android开发学习之路--MediaPlayer之简单音乐播放器初体验
很多时候我们都会用手机来播放音乐,播放视频,那么具体地要怎么实现呢,其实主要是MediaPlayer类来完成的.下面通过简单的例子来实现一首歌曲的播放吧.新建工程MediaPlayerStudy,这里 ...
随机推荐
- jenkins#自动构建并部署springboot的jar包
1.GitLab 8.0.0(版本比较低,配置比较简单) 配置 点击项目 --> settings --> web Hooks 2.jenkins配置
- SpringBoot#应用启动后执行某些逻辑
// 方式1 @Component public class WhenStartupA implements InitializingBean { @Override public void afte ...
- html5,css3炫酷实例-元素
自动完成输入框下拉列表 使用的插件:jquery-ui 使用数据源实现文本框的自动完成功能 <link href="https://cdn.bootcss.com/jqueryui/1 ...
- Day4 - I - Trucking HDU - 2962
A certain local trucking company would like to transport some goods on a cargo truck from one place ...
- imp.load_source的用法
imp.load_source(name,pathname[,file])的作用把源文件pathname导入到name模块中,name可以是自定义的名字或者内置的模块名称. 假设在路径E:/Code/ ...
- 吴裕雄--天生自然java开发常用类库学习笔记:线程常用的操作方法
class MyThread implements Runnable{ // 实现Runnable接口 public void run(){ // 覆写run()方法 for(int i=0;i< ...
- redis学习(六)
一.Redis 数据备份与恢复 1.Redis SAVE 命令用于创建当前数据库的备份.该命令将在 redis 安装目录中创建dump.rdb文件. 2.语法:redis 127.0.0.1:6379 ...
- Ubuntu19.04的安装过程详解以及操作系统初始化配置
Ubuntu19.04的安装过程详解以及操作系统初始化配置 ...
- Python实战案例:这是你见过的最详细的JS加密登录某博
0x00 抓包分析 简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号光标到达密码框时就会生成! 0x01 加密逻辑分析 搜索su=可以很快找到加密的位置,上图看到e.su ...
- css 基础知识 (待完善...)
CSS 1.position 属性 对元素进行定位. absolute 相对于 非static类型的position 的 第一个(临近的) 父元素 进行定位. ...