django rest framework 与django 区别

Django REST Framework(DRF)是构建在Django框架之上的专门工具集,两者核心区别在于设计目标和功能定位:

一、定位与核心功能差异

  1. Django
    作为全栈Web框架,采用MVT(Model-View-Template)模式:

    • 后端渲染‌:通过视图(View)处理业务逻辑,模板(Template)生成HTML页面返回到前端。
    • 一体化开发‌:包含ORM、认证、路由、后台管理等功能,适合构建传统服务端渲染的网站‌。
    • 典型流程‌:数据库 → ORM → View → Template → HTML响应‌。
  2. DRF
    专注于构建‌RESTful API‌,适用于前后端分离架构:

    • 数据接口化‌:使用序列化器(Serializers)将数据库模型转为JSON/XML等格式,通过视图类(ViewSets/APIView)处理HTTP请求‌。
    • 去模板化‌:移除Django的模板渲染,仅返回结构化数据(如JSON),由前端独立处理展示逻辑‌。
    • 增强API特性‌:集成身份验证(Token/OAuth)、限流、过滤、分页等API专用功能‌。

二、工作流对比

组件 Django DRF
数据交互 ORM直接操作模型 Serializers序列化/反序列化模型 ‌
视图层 基于函数的视图或类视图 APIView、ViewSets(支持批量操作)‌
输出格式 HTML页面 JSON/XML等结构化数据 ‌
路由 URL映射到视图函数 Router自动生成API端点 ‌

三、适用场景

  • 选择Django‌:
    需要快速开发包含后管系统(如Admin后台)的全功能网站,或需服务端渲染页面的项目‌。

  • 选择DRF‌:

    • 需为Web/移动端App提供统一API接口。
    • 实施前后端分离架构,前端使用React/Vue等框架‌。
    • 要求API具备标准化功能(如JWT认证、OpenAPI文档)‌。

四、扩展能力

DRF在Django基础上新增:✅ ‌序列化嵌套关系‌(如外键层级数据)
✅ ‌限流控制‌(防止API滥用)
✅ ‌动态过滤/排序‌(通过django-filter库)
✅ ‌自动化API文档‌(Swagger集成)‌


总结来说,‌Django是基础Web框架,而DRF是其针对API开发的强化扩展‌。若项目需纯后端数据接口,DRF可大幅提升开发效率;若需传统全栈应用,直接使用Django更高效‌。