Django REST Framework

发布于:2025-09-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

1. 什么是 DRF?

Django REST Framework 是一个功能强大且灵活的工具包,用于在 Django 中构建 Web API

  • 它不是框架:它不是一个独立的框架,而是构建在 Django 之上的一系列可重用组件。

  • 它的目的:让你能够快速、轻松地构建 RESTful API,并遵循 Django 的设计哲学(如 DRY 原则)。

  • 它的特点:提供了序列化、视图、路由、认证、权限、限流等一套完整的解决方案,大大减少了构建 API 的重复性工作。


2. 为什么使用 DRF?(它的优势)

  1. 强大的序列化器:核心功能之一,可以轻松地将复杂的 Django 模型(QuerySet)序列化为 JSON、XML 等格式,反之亦然(反序列化并进行数据验证)。

  2. 丰富的类视图:提供了 APIViewGenericAPIView, 以及各种 Mixin,让你可以用很少的代码实现标准的 CRUD 操作。

  3. 可浏览的 API:开箱即用!DRF 会自动为你的 API 生成一个美观的、可交互的 Web 界面,方便开发人员测试和调试,无需额外工具(如 Postman)。

  4. 全面的认证与权限:内置了多种认证方案(Token、Session、JWT 等)和权限控制(IsAuthenticated、IsAdminUser、自定义权限等),保障 API 安全。

  5. 极高的灵活性:虽然提供了很多“开箱即用”的功能,但每个组件都可以被轻松地定制和重写,以适应复杂的业务需求。

  6. 庞大的社区和生态:作为 Django 生态中最流行的 API 框架,拥有丰富的教程、插件和社区支持。

3. 核心组件与工作流程

要理解 DRF,最重要的是理解它的几个核心组件是如何协同工作的:

a. 序列化器

这是 DRF 的“灵魂”。它负责两件事:

  1. 序列化:将模型实例或 QuerySet 转换为 Python 原生数据类型,进而可以轻松地渲染成 JSON

  2. 反序列化:将客户端发送的原始数据(如 JSON)解析并验证,然后转换成复杂的 Django 模型实例。

b. 视图

DRF 提供了多种编写视图的方式,从最灵活到最高效:

  1. APIView:基础类,提供了与 Django 的 View 类类似但更强大的功能(如专门的请求/响应对象、认证、权限检查等)。

  2. GenericAPIView + Mixins:通用视图和混合类,提供了常见的操作逻辑(如 .list().create().retrieve().update().destroy())。你可以组合它们来快速构建视图。

  3. ViewSet:将一组相关的视图逻辑(如 list, create, retrieve, update, delete)组织在一个类中。它通常与路由器(Router)配合使用,自动生成 URL 配置。

c. 路由

使用 DRF 的 Router 可以自动为 ViewSet 生成 URL conf,非常方便。

d. 认证与权限

在 settings.py 中全局配置,或在具体的视图中通过 permission_classes 和 authentication_classes 属性设置。

4. 一个极简的 DRF API 创建流程

  1. 安装pip install djangorestframework

  2. 添加应用:在 settings.py 的 INSTALLED_APPS 中添加 'rest_framework'

  3. 定义模型:在 models.py 中创建你的数据模型(如 Article)。

  4. 创建序列化器:在 serializers.py 中创建继承自 ModelSerializer 的序列化器类。

  5. 编写视图:在 views.py 中创建继承自 ModelViewSet 的视图集。

  6. 配置路由:在 urls.py 中使用 DefaultRouter 注册视图集。

  7. 运行服务器python manage.py runserver,访问 /api/articles/ 即可看到可浏览的 API!


网站公告

今日签到

点亮在社区的每一天
去签到