终极指南:如何用Django REST Framework基于类的视图快速构建API
Django REST Framework(DRF)是构建强大API的利器,而基于类的视图是DRF中最优雅高效的开发方式。本文将带你掌握类视图的核心概念、实战技巧和最佳实践,让你从零开始快速构建专业级API。
为什么选择基于类的视图?
基于类的视图(Class-Based Views, CBV)是DRF提供的高级抽象,相比传统函数视图具有三大优势:
- 代码复用:通过继承和混入(mixin)机制,轻松实现复杂功能组合
- 逻辑清晰:将不同HTTP方法(GET/POST/PUT等)组织为类中的方法,结构更合理
- 扩展灵活:内置丰富的基类和混入类,如
ListAPIView、CreateAPIView等,大幅减少重复代码
DRF的类视图系统主要定义在rest_framework/views.py文件中,包含了从基础到高级的各类视图实现。
快速入门:类视图基础结构
一个最基础的DRF类视图结构如下:
from rest_framework.views import APIView
from rest_framework.response import Response
class ExampleView(APIView):
def get(self, request):
# 处理GET请求
return Response({"message": "Hello, world!"})
def post(self, request):
# 处理POST请求
return Response({"data": request.data})
这种结构让不同HTTP方法的处理逻辑一目了然,比函数视图中使用条件判断更加优雅。
核心基类与混入:提升开发效率
DRF提供了一系列预构建的通用视图类,位于rest_framework/generics.py中,包括:
ListAPIView:提供列表查询功能CreateAPIView:提供创建资源功能RetrieveAPIView:提供单个资源查询功能UpdateAPIView:提供更新资源功能DestroyAPIView:提供删除资源功能
这些视图类可以单独使用,也可以组合使用,例如ListCreateAPIView同时提供列表查询和创建功能。
图:使用DRF类视图构建的用户列表API界面,支持数据展示和表单提交
视图集(ViewSets):更进一步的抽象
对于完整的CRUD操作,DRF的视图集(ViewSets)提供了更高级的抽象,将相关操作组织到一个类中:
from rest_framework import viewsets
from .models import User
from .serializers import UserSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
这一个类就提供了列表、详情、创建、更新、删除等全部功能。配合rest_framework/routers.py中的路由系统,可以自动生成完整的API路由。
实战技巧:过滤器与排序
DRF类视图可以轻松集成过滤和排序功能,只需添加相应的过滤器后端:
from rest_framework import filters
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
filter_backends = [filters.SearchFilter, filters.OrderingFilter]
search_fields = ['name', 'description']
ordering_fields = ['price', 'created_at']
API文档自动生成
使用DRF的类视图,还可以轻松生成交互式API文档。通过访问/docs/端点,即可获得完整的API文档,包含所有端点的说明、参数和交互界面。
图:DRF自动生成的交互式API文档,支持直接在浏览器中测试API
总结:类视图开发最佳实践
- 优先使用通用视图类:如
ListAPIView、ModelViewSet等,减少重复代码 - 合理使用混入类:通过组合不同功能的混入类,实现复杂业务逻辑
- 保持视图精简:业务逻辑尽量放在序列化器或服务层,保持视图层简洁
- 利用装饰器扩展:使用
@action装饰器添加自定义端点,扩展视图集功能
通过本文介绍的基于类的视图开发方法,你可以快速构建出功能完善、结构清晰的RESTful API。DRF的类视图系统不仅提高了代码复用率,还让API开发过程更加规范和高效。想要深入学习,可以查阅官方文档docs/api-guide/generic-views.md和docs/api-guide/viewsets.md。
开始你的DRF类视图之旅,体验构建专业API的乐趣吧!🚀
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00
