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

序列化操作:将模型数据 ---> 字典数据 --->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框架之序列化器初体验的更多相关文章

  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. python多进程编程中常常能用到的几种方法

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程.python提供了非常好用的多进程包Multiprocessing,只需要定义 ...

  2. Spark Scheduler 模块(下)

    Scheduler 模块中最重要的两个类是 DAGScheduler 和 TaskScheduler.上篇讲了 DAGScheduler,这篇讲 TaskScheduler. TaskSchedule ...

  3. Maven的原理和使用

    一.Maven能做什么 1.假设我们有10个项目,都需要引入spring core模块,那么需要十份重复的Spring Core.jar和commons-logging.jar 使用Maven:mav ...

  4. java集合简单特性

  5. nodejs - fs模块 - 文件操作

    1, fs.stat  检测是文件还是目录 2, fs.mkdir 创建目录 var fs = require('fs') fs.mkdir('./dir',function(err){ if(err ...

  6. Python序列内单双引的问题——未解决

    在学习python基础的时候,遇到这样一个问题: tuple=(2,2.3,"yeah",5.6,False)list=[True,5,"smile"] 这样输 ...

  7. TensorFlow中的L2正则化函数:tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()的用法与异同

    tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()都是TensorFlow中的L2正则化函数,tf.contrib.layers.l2_regula ...

  8. sql编程利器,Sql Prompt下载及安装方法

    Sql Prompt只能提示及其格式化用起来非常方便: 推荐网址:www.4-yecao.com 免费下载地址:http://download.csdn.net/detail/caizz520/455 ...

  9. net GC 学习以及问题

    引用对象必要空间开销:对象指针.同步块索引 GC重要点: 每个应用程序包含一组根,每个根都是一个存储位置,其中包含指向引用类型对象的一个指针,该指针要么指向托管堆中的要给对象,要么为null.(这句话 ...

  10. ZOJ 3795 Grouping 强连通分量-tarjan

    一开始我还天真的一遍DFS求出最长链以为就可以了 不过发现存在有向环,即强连通分量SCC,有向环里的每个点都是可比的,都要分别给个集合才行,最后应该把这些强连通分量缩成一个点,最后保证图里是 有向无环 ...