Django基础知识整理之DRF框架

2023-11-09

1.DRF框架简介

Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。
通常简称为DRF框架REST framework
DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。

在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。
在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的:
增:校验请求数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回
删:判断要删除的数据是否存在 -> 执行数据库删除
改:判断要修改的数据是否存在 -> 校验请求的数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回
查:查询数据库 -> 将数据序列化并返回
Django REST framework可以帮助我们简化上述两部分的代码编写,大大提高REST API的开发速度。

2.DRF特点

1.提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;
2.提供了丰富的类视图、Mixin扩展类,简化视图的编写;
3.丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
4.多种身份认证和权限认证方式的支持;
5.内置了限流系统;
6.直观的 API web 界面;
7.可扩展性,插件丰富

3.环境安装与配置

DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django

  1. 安装DRF
pip install djangorestframework
  1. 添加rest_framework应用
    我们利用在Django框架学习中创建的demo工程,在settings.py的INSTALLED_APPS中添加’rest_framework’。
INSTALLED_APPS = [
    ...
    'rest_framework',
]

接下来就可以使用DRF进行开发了。

4.DRF牛刀小试

我们仍以在学习Django框架时使用的图书英雄为案例,使用Django REST framework快速实现图书的REST API。

1. 创建序列化器

在books应用中新建serializers.py用于保存该应用的序列化器。

创建一个BookInfoSerializer用于序列化与反序列化。

from rest_framework import serializers
from books.models import BookInfo


class BookInfoSerializer(serializers.ModelSerializer):
    """图书数据序列化器"""
    class Meta:
        model = BookInfo
        fields = '__all__'

model 指明该序列化器处理的数据字段从模型类BookInfo参考生成
fields 指明该序列化器包含模型类中的哪些字段,'all’指明包含所有字段

2. 编写视图

在books应用的views.py中创建视图BookInfoViewSet,这是一个视图集合。

from rest_framework.viewsets import ModelViewSet
from .serializers import BookInfoSerializer
from .models import BookInfo

class BookInfoViewSet(ModelViewSet):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer

queryset 指明该视图集在查询数据时使用的查询集
serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器

3. 定义路由

在books应用的urls.py中定义路由信息。


from . import views
from rest_framework.routers import DefaultRouter

urlpatterns = [

]

router = DefaultRouter()  # 可以处理视图的路由器
router.register(r'books', views.BookInfoViewSet)  # 向路由器中注册视图集

urlpatterns += router.urls  # 将路由器中的所以路由信息追到到django的路由列表中

4. 运行测试

在浏览器中输入网址127.0.0.1:8000,可以看到DRF提供的API Web浏览页面:
在这里插入图片描述
1)点击链接127.0.0.1:8000/books/ 可以访问获取所有数据的接口,呈现如下页面:在这里插入图片描述
2)在页面底下表单部分填写图书信息,可以访问添加新图书的接口,保存新书:
在这里插入图片描述
点击POST后,返回如下页面信息:
在这里插入图片描述
查看数据库表成功写入:
在这里插入图片描述

3)在浏览器中输入网址127.0.0.1:8000/books/8/,可以访问获取单一图书信息的接口(id为8的图书),呈现如下页面:
在这里插入图片描述
4)在页面底部表单中填写图书信息,可以访问修改图书的接口:在这里插入图片描述
点击PUT,返回如下页面信息:

在这里插入图片描述
数据库表也成功修改:
在这里插入图片描述
5)点击DELETE按钮,可以访问删除图书的接口(如删除id为1的图书):
在这里插入图片描述
在这里插入图片描述
再点delete,返回如下页面:
在这里插入图片描述
数据表成功删除id为1的图书:
在这里插入图片描述
看到现在,是不是发现DRF框架很强大!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django基础知识整理之DRF框架 的相关文章

随机推荐

  • 实现51单片机按键按一下LED熄灭,再按一下LED亮起来的操作

    前言 完成51单片机基础的按键操作 实现按键按一下LED熄灭 再按一下LED亮起来的操作 一 完成51单片机基础的按键操作 实现按键按一下LED熄灭 再按一下LED亮起来的操作 include
  • Circle创立十年:从0到1000亿USDC流通量的愿景与思考

    原文标题 Why Circle CEO Jeremy Allaire Is So Optimistic About Stablecoins Future 原文作者 Laura Shin 原文来源 unchained 编译 Kaori Blo
  • 【华为OD】

    华为OD试题注意事项 使用合适的编程语言 在华为OD机试中多数情况下使用C 或Java 按照题目要求进行编码 仔细阅读题目描述并理解要求 在编码前可以进行伪代码编写或画流程图有助于理解和排除逻辑错误 注意代码的规范性 注重代码的可读性和可维
  • 服务器如何存储文件夹在哪,ecs云服务器如何存储文件夹

    ecs云服务器如何存储文件夹 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 按需购买的两台同类型弹性云服务器 操作系统类
  • 实用tcpdump命令 【转】

    文章来源 实用tcpdump命令 查看本机与mysql的操作命令 注意 i any表示监听所有网络接口 我们也根据自身情况选择网络接口 tcpdump i any w dst port 3306 strings 查看本机58895上与mys
  • 解决bug:Error creating bean with name 'webHandler' defined in class

    今天写代码 用到了 Spring Boot Admin 这是一个管理和监控的开源监控软件 但是今天一运行就报以下错误 Error creating bean with name webHandler defined in class wha
  • vue-message-simulate

    vue message simulate a light plugin of vue it simulates alert confrim model 依赖于sass 切 不支持ie9 一下的版本 使用如下 下载之后 在main js中 1
  • 如何在 Linux 中设置或更改系统主机名

    博学谷提供技术支持 主机名能帮助人们轻松的识别网络中的机器 单独运行hostname 不带任何参数 将返回 Linux 系统的当前主机名 如下所示 hostname TecMint 如果想更改 Linux 系统的主机名 只需运行 hostn
  • 测试用例设计-X云

    测试用例概述 测试用例设计方法 1 先对符合规则的设计一条用例 等价类方法 12个字符符合6 18个长度 不符合规则的 lt 6的字符 gt 18个字符 考虑边界值 我记得以前是考虑一个条件 另一个条件选有效等价类即可 这里考虑两个三件 那
  • java中String+String与StringBuilder的append()方法的效率问题

    因为上一次的A题过程中 发现String的 总是超时 后来用到了append 方法 就过了 发现两者的效率存在很大的区别 测试如下 public static void main String args TODO 自动生成的方法存根 Str
  • 无向图的深度优先遍历非递归_数据结构-图(图的基本实现C++)

    一 图的概念 图是一种比较复杂的非线性数据结构 图 Graph 是由顶点的有穷非空集合和顶点之间边的集合组成 通常表示为 G V E 其中 G表示一个图 V是图G中顶点的集合 E是图G中边的集合 图区分有向图和无向图 1 无向图 Undir
  • 编写程序,实现利用while循环和for循环属输出100以内偶数的功能。

    实现利用while循环属输出100以内偶数的功能 1 使用whlie编写 i 1 while i lt 100 i 1 if i 2 gt 0 continue print i end print 输出结果 2 4 6 8 10 12 14
  • 计算机科研立项应用类题目,《科研立项题目举例》.doc

    科研立项题目举例 计算机技术在其发展过程中形成两个重要分支 通用计算机领域 现在以Pc机为代表 着重发展海量高速数值运算技术 而其控制能力是有限的 嵌入式计算机领域 现在以单片机为代表 着重发展计算机的控制技术 而其计算机速度是有限的 在目
  • 小白学《HTML5网页开发实例详解》连载三(DOCTYPE和字符集)

    在2 1 2节中通过新老DOCTYPE的对比 读者可以清晰地看到HTML 5在精简旧有结构上做出的努力 DOCTYPE在出现之初主要用于XML中 用作描述XML允许使用的元素 属性和排列方式 起初HTML借鉴了XML中DOCTYPE的使用方
  • 使用OpenCV和Python生成视频条形码

    使用OpenCV和Python生成视频条形码 1 效果图 2 原理 2 1 步骤 2 2 项目结构 3 源码 参考 这篇博客将演示如何使用Python OpenCV生成视频条形码 生成视频条形码通常是出于设计美感 它不具有广泛的计算机视觉
  • 阿里云ECS FTP搭建

    阿里云ECS windows版 FTP服务设置教程 1 https www filezilla cn 去下载服务端和客户端并安装好 2 阿里云添加安全组 3 FileZilla服务端配置 4 FileZilla客户端使用端口10021连接服
  • AI巨浪下,数据技术如何驱动智能未来?

    引言 数据技术是大数据时代的核心驱动力 也是推动各行各业数字化转型和智能化升级的关键因素 随着云计算 人工智能 区块链等新兴技术的不断发展和融合 数据技术也呈现出多模态 混合处理 自动化管理等新的趋势和特点 8 月 19 日 周六 第八届
  • MongoDB:模糊查询、数量、结果插入新表、重复字段

    模糊查询 body中包含 db getCollection test find body regex 骗子 body或title中包含 db getCollection test find or body regex 骗子 title re
  • astype转换数据类型

    astype方法 通用函数 可以用于把dataframe中的任何列转换成其他类型 常见的数据类型有 int 整型 float 浮点型 object str 字符串 category 分类数据 import pandas as pd impo
  • Django基础知识整理之DRF框架

    文章目录 1 DRF框架简介 2 DRF特点 3 环境安装与配置 4 DRF牛刀小试 1 创建序列化器 2 编写视图 3 定义路由 4 运行测试 1 DRF框架简介 Django REST framework 框架是一个用于构建Web AP