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

序列化操作:将模型数据 ---> 字典数据 --->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来抢票回家!

    不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...

  2. 011.CI4框架CodeIgniter, 获取查看用户的IP地址和浏览器信息

    01.PHP CI4框架CodeIgniter中有Request 类,是用来读取各种用户的数据,其中获取IP地址的代码如下: <?php namespace App\Controllers; c ...

  3. VUE- 访问服务器端数据 axios

    VUE- 访问服务器端数据 axios 一,安装 npm install axios 二,在http.js中引入 import axios from 'axios'; 三,定义http request ...

  4. 使用 HTML5 视频事件

    转自:http://msdn.microsoft.com/zh-cn/library/hh924822(v=vs.85).aspx 为什么要使用事件? HTML5 视频对象提供了很多事件,这些事件可以 ...

  5. windows下修改pip安装源的办法

    之前的随笔里有写过关于Mac OS和Linux的,现在需要用到Windows的系统, 修改方法:路径----> C:\Users\用户名\AppData\Roaming,在Roaming文件夹下 ...

  6. LeetCode1029 两地调度(贪心+java自定义排序回顾)

    题目: 公司计划面试 2N 人.第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]. 返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵 ...

  7. HDU - 1864 最大报销额 (01背包)

    题意:现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编写 ...

  8. 一对多关联按照一方的id查找信息的一个笛卡尔积问题

    mapper中,关联的一对多,正确的结果应该是按照一方的id查找,根据映射得到的是一个一方对象,对象里嵌套这list属性,但是结果却出来了多条,在sql中实验 一方中123456789只有一条数据 多 ...

  9. Pycharm连接Mysql失败. [08001] Could not create connection to database server.

    使用Pycharm连接MySQL时遇到如下问题,错误代码[08001] 查了很多资料归纳一下可能是如下几个原因 0.mysql.server没开 找到对应系统下的mysql.server 启动/重启命 ...

  10. mysql多表连接查询

    新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) ...