什么是 Django REST framework
Django REST framework 是一个用于构建 Web API 的库,它基于 Django,且拥有许多 Django 框架的优点。它使得构建 Web API 变得更加快捷、易于维护和扩展。
Django REST framework 提供了许多用于构建 Web API 的工具,其中类视图是其中一个更加强大的工具。
什么是类视图
在 Django 中,视图是处理浏览器请求并返回相应内容的函数。在 Django REST framework 中,除了函数视图之外,还有一种更加强大的视图,那就是类视图。
类视图是一个基于类的视图系统,它将 HTTP 请求分配到类的方法上。相比于函数视图,类视图更加具有表现力和可重用性。
类视图使用类来编写视图,而不是使用函数,所以使用类视图可以提供更加严谨和灵活的代码。另外,类视图提供了许多内置方法,可以节省开发时间和精力。
Django REST framework 类视图的分类
Django REST framework 的类视图可以分为以下三类:
API View
API View 是普通的基于类的视图,它可以轻松地处理最基本的 HTTP 请求。API View 提供了诸如安全、身份认证、限流等功能。
from rest_framework.views import APIView from rest_framework.response import Response class ExampleView(APIView): def get(self, request, format=None): return Response({'message': 'Hello, World!'})
Generic View
Generic View 在 API View 的基础上提供了许多常见 API 操作的快速实现。例如,我们可以继承 ListAPIView
来创建一个列表视图,它可以很方便地处理列表数据的显示和分页。
from rest_framework.generics import ListAPIView from rest_framework.pagination import PageNumberPagination class ExampleListView(ListAPIView): queryset = Example.objects.all() serializer_class = ExampleSerializer pagination_class = PageNumberPagination
Viewset
Viewset 是 Django REST framework 提供的一个更加高效的方式来编写 API 视图。Viewset 将一些常见 API 操作封装成一个类中的方法,并且在路由设置上也提供了方便。
from rest_framework import viewsets class ExampleViewSet(viewsets.ModelViewSet): queryset = Example.objects.all() serializer_class = ExampleSerializer
类视图的优势
相比于 Django 中的函数视图,Django REST framework 的类视图具有以下优势:
更灵活的代码组织
类视图不仅提供了一种更加清晰、可读性更强的代码组织方式,还能更好地避免视图函数的名字冲突问题。
代码复用
类视图通常可以更好地重用代码,因为它支持继承和多重继承等 Python 特性。
更好的可读性
类视图可以提高代码的可读性,特别是在我们使用内置通用类视图时。这些视图以更加直观的方式展示了操作数据的不同方式。
更好的逻辑封装
类视图具有更好的逻辑封装,我们可以通过继承的方式来封装一些通用的逻辑,例如类认证、类限流等模块。
如何使用 Django REST framework 类视图
下面我们举一个例子来演示如何利用 Django REST framework 的类视图创建一个 API 视图。比如我们需要创建一个用于展示学生信息的视图。
以上实现方式采用 Django REST framework 的 API View:
-- -------------------- ---- ------- ---- -------------------- ------ ------- ---- ----------------------- ------ -------- ----- --------------------- --- --- ----- ---- --- --- --------- -------- ------------- -------- - --------------------- ---------- - --------------------------- ---------- ------ ------------------------- --- ---------- -------- ------------- ---------- - ------------------------------------ -- ---------------------- ----------------- ------ ------------------------- ------------------------------- ------ --------------------------- -----------------------------------
以上实现方式采用 Django REST framework 的 Generic View:
-- -------------------- ---- ------- ---- ----------------------- ------ ----------------- ---- ------------------------- ------ -------------------- ----- ----------------------------------- --- ------- ----- ------ --- -------- - --------------------- ---------------- - ----------------- ---------------- - --------------------
以上实现方式采用 Django REST framework 的 Viewset:
from rest_framework import viewsets class StudentViewSet(viewsets.ModelViewSet): """ Viewset: 学生信息 """ queryset = Student.objects.all() serializer_class = StudentSerializer
总结
类视图是 Django REST framework 提供的一个更加强大和灵活的构建 Web API 的工具。通过合理应用,它可以让我们用更少的时间和精力来开发出高质量的 API 服务。不同的类视图提供不同的功能,根据业务实际需求选择不同的视图类型,将会更加便利。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ae5ce348841e9894a62443