DjangoRestFramework系列教程(6):视图集viewsets和路由器router

DjangoRestFramework之教程6:视图集和路由器

REST框架包括用于处理ViewSets,这使开发人员能够集中精力对API的状态和交互进行建模,并根据常见约定自动处理URL构造。

ViewSet类几乎与View类,但它们提供的操作如下:read,或update,而不是方法处理程序,例如get或put.

A ViewSet类仅在最后一刻绑定到一组方法处理程序,当它被实例化为一组视图时,通常使用Router类,它处理为您定义URL conf的复杂性。

重构以使用ViewSet
让我们使用当前的视图的集合,并将它们重构为视图集。

首先,让我们重构我们的UserList和UserDetail视图为单个UserViewSet…我们可以移除这两个视图,并将它们替换为一个类:

from rest_framework import viewsets

class UserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    This viewset automatically provides `list` and `detail` actions.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

这里我们用了ReadOnlyModelViewSet类自动提供默认的“只读”操作。我们还在设置queryset和serializer_class属性与我们使用常规视图时所用的完全一样,但是我们不再需要向两个单独的类提供相同的信息。

接下来,我们将替换SnippetList, SnippetDetail和SnippetHighlight查看类。我们可以删除这三个视图,并再次用一个类替换它们。

from rest_framework.decorators import action
from rest_framework.response import Response

class SnippetViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.

    Additionally we also provide an extra `highlight` action.
    """
    queryset = Snippet
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值