首先,我们需要明白序列化和反序列化的过程指的是什么。

序列化操作:将模型数据 ---> 字典数据 --->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框架模块

  1. pip install djangorestframework

2. 配置DRF框架

  1. INSTALLED_APPS = [
  2. ...
  3. 'rest_framework', # DRF子应用
  4. ]

当我们安装完成DRF框架模块后,想要在Django程序中使用DRF框架,需要在配置文件中进行注册子应用。

当我们,完成以上两步操作后,就可以开始使用DRF框架开发API了。

DRF框架开发之初体验程序:

1. 我们要在,使用序列化操作的子应用中创建一个名字为serializers.py的文件,用于保存该应用的序列化器。

  1. class BookInfoSerializer(serializers.ModelSerializer):
  2. '''图书数据序列化器'''
  3. class Meta:
  4. # 设置需要序列化的模型类
  5. model = BookInfo
  6.  
  7. # 设置需要序列化的模型字段
  8. fields = '__all__' # __all__:所有字段

2. 我们要,定义一个视图即接口(API)。

  1. from rest_framework.viewsets import ModelViewSet
  2.  
  3. from booktest.models import BookInfo
  4. from booktest.serializers import BookInfoSerializer
  5.  
  6. class BookInfoViewSet(ModelViewSet):
  7. '''使用序列化器的图书信息视图'''
  8. # 设置查询集
  9. queryset = BookInfo.objects.all()
  10. # 设置序列化器
  11. serializer_class = BookInfoSerializer

3. 我们要,定义路由信息。

  1. from django.conf.urls import url
  2. from rest_framework.routers import DefaultRouter
  3.  
  4. from booktest import views
  5.  
  6. urlpatterns = [
  7.  
  8. ]
  9.  
  10. # 定义一个序列化器的路由器
  11. router = DefaultRouter()
  12.  
  13. # 将序列化器的视图进行注册
  14. router.register(r'books', views.BookInfoViewSet)
  15.  
  16. # 将注册后的序列化器添加到路由中
  17. urlpatterns += router.urls

通过,这次体验,是不是发现DRF框架的方便之处了呢?

接下来,我们就要进行系统的学习DRF框架了。

DRF框架之序列化器初体验的更多相关文章

  1. DRF中的序列化器

    DRF中的序列化器详细应用   视图的功能:说白了就是接收前端请求,进行数据处理 (这里的处理包括:如果前端是GET请求,则构造查询集,将结果返回,这个过程为序列化:如果前端是POST请求,假如要对数 ...

  2. 【DRF框架】序列化组件

    DRF框架的序列化组件 在前后端分离的应用模式中,后端仅返回前端所需的数据,返回的数据类似是JSON,因此需要使用序列化组件进行序列化再将数据返回 使用JsonResponse做序列化 #  使用Js ...

  3. 经历了源码的痛苦,掌握DRF的核心序列化器

    目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...

  4. Python+Flask+Gunicorn 项目实战(一) 从零开始,写一个Markdown解析器 —— 初体验

    (一)前言 在开始学习之前,你需要确保你对Python, JavaScript, HTML, Markdown语法有非常基础的了解.项目的源码你可以在 https://github.com/zhu-y ...

  5. DRF项目之序列化器和视图重写方法的区别

    我们,都知道,DRF框架是一款高度封装的框架. 我们可以通过重写一些方法来实现自定义的功能. 今天,就来说说在视图中重写和序列化器中重写方法的区别. 在视图中重写方法: 接收请求,处理数据(业务逻辑) ...

  6. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  7. 【DRF框架】序列化组件——ModelSerializer

    ModelSerializer 1.ModelSerializer类似于ModelForm 2.根据模型自动生成一组字段 3.自带实现了.update()以及.create()方法 ModelSeri ...

  8. 【DRF框架】序列化组件——字段验证

    单个字段的验证 1.在序列化器里定义校验字段的钩子方法   validate_字段 2.获取字段的数据 3.验证不通过,抛出异常  raise serializers.ValidationError( ...

  9. Android开发学习之路--MediaPlayer之简单音乐播放器初体验

    很多时候我们都会用手机来播放音乐,播放视频,那么具体地要怎么实现呢,其实主要是MediaPlayer类来完成的.下面通过简单的例子来实现一首歌曲的播放吧.新建工程MediaPlayerStudy,这里 ...

随机推荐

  1. linux 查看ip、用户、时间对应执行的命令

    这个需要使用到history命令.可以加数字,返回最近执行的几条命令.如果不加数字会返回所有的历史命令. [root@localhost ~]# history 20 1015 rm stdin.lo ...

  2. xaml与CSS中的Margin顺序不同

    XAML中  Margin:左 上 右 下 CSS中      Margin:上 右 下 左

  3. CSV用excel打开乱码

    utf-8 csv 文件用 excel 打开乱码问题 其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了. ...

  4. 【转】Spark Streaming 实时计算在甜橙金融监控系统中的应用及优化

    系统架构介绍 整个实时监控系统的架构是先由 Flume 收集服务器产生的日志 Log 和前端埋点数据, 然后实时把这些信息发送到 Kafka 分布式发布订阅消息系统,接着由 Spark Streami ...

  5. JuJu团队11月30号工作汇报

    JuJu团队11月30号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 于达  提供类似generator的数据产生接口  改进代码  对julia不够熟悉 婷婷  和队友一起 ...

  6. webservice调试(XML参数)

    <![CDATA[ <?xml version="1.0" encoding="UTF-8"?><MsgText> <use ...

  7. Ican协议建立连接我的感悟

    有一个情形我突然之间想明白了. 注意下面情形:                             假设节点A与节点B已经 正常的建立了连接,并且进行了通讯. 假设 节点B收到了 节点A 的 &q ...

  8. CGridCtrl只点击规定行中的按钮才弹出对话框

    在头文件中添加: afx_msg void OnClick(NMHDR* pNMHDR, LRESULT* pResult); 添加映射:ON_NOTIFY(NM_CLICK, IDC_CUSTOM1 ...

  9. LocalDateTime整合到SpringBoot + MyBatis中

    啥也不说先贴两个代码: 一:MVC层配置 @Configuration public class JacksonConfig { /** 默认日期时间格式 */ public static final ...

  10. 虚拟化安全服务器のIP修改配置

    1)进入网卡配置文件目录(以centos7.6为例) cd /etc/sysconfig/network-scripts     2)编辑配置文件(根据自己机器实际网卡进行编辑), 如Vi ifcfg ...