返回

Rest-framework专栏讲解(二):掌控全局的View

闲谈

Rest-framework专栏讲解(二):掌控全局的View

View:处理请求的视图组件

View是Rest framework中处理请求的基本组件。它提供了一个处理请求并返回响应的方法。View可以是函数视图或类视图。

函数视图是一个普通的Python函数,它接受一个请求对象作为参数,并返回一个响应对象。函数视图通常用于简单的API接口,而类视图则用于更复杂的API接口。

类视图是一个Python类,它继承自Rest framework中的某个视图基类。类视图通常用于构建更复杂的API接口,因为它们可以提供更多的功能和灵活性。

ViewSet:处理一组相关资源的视图集

ViewSet是一个处理一组相关资源的视图集。它提供了一组处理请求的方法,这些方法可以用于创建、检索、更新和删除资源。ViewSet通常用于构建RESTful API接口,因为它们可以提供更简洁和一致的API设计。

如何使用View和ViewSet来处理请求

要使用View和ViewSet来处理请求,需要先定义一个路由,然后将View或ViewSet与该路由相关联。可以使用以下代码来定义一个路由:

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'articles', ArticleViewSet, basename='article')

这段代码定义了一个路由,将ArticleViewSet/articles/路由相关联。这意味着,当客户端向/articles/路由发送请求时,将由ArticleViewSet来处理请求。

View和ViewSet的方法

View和ViewSet提供了多种方法来处理请求,这些方法通常以get()post()put()delete()开头。这些方法分别对应着HTTP GET、POST、PUT和DELETE请求。

以下是一些常用的View和ViewSet方法:

  • get(): 获取资源
  • post(): 创建资源
  • put(): 更新资源
  • delete(): 删除资源
  • list(): 获取资源列表
  • create(): 创建资源
  • retrieve(): 获取单个资源
  • update(): 更新单个资源
  • destroy(): 删除单个资源

View和ViewSet的示例

以下是一个简单的View示例:

from rest_framework.views import APIView

class ArticleView(APIView):
    def get(self, request):
        articles = Article.objects.all()
        serializer = ArticleSerializer(articles, many=True)
        return Response(serializer.data)

这个View处理/articles/路由上的GET请求,并返回所有文章的列表。

以下是一个简单的ViewSet示例:

from rest_framework.viewsets import ModelViewSet

class ArticleViewSet(ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

这个ViewSet处理/articles/路由上的所有请求,并提供创建、检索、更新和删除文章的功能。

结语

View和ViewSet是Rest framework中处理请求的核心组件。理解它们对于构建基于Rest framework的API接口至关重要。