Django REST framwork-06-使用 ViewSets 视图集和 Routers 路由

在这里插入图片描述

GenericViewSet

重写了 .as_view 方法,和 DRF 的 Routers 结合,可以简化路由配置。

返回一组列表数据

定义视图

from rest_framework import viewsets
from rest_framework import mixins


class ServerViewSet(
    mixins.ListModelMixin,viewsets.GenericViewSet):
    '''Viewsets.GenericViewSet 实现服务器列表'''
    queryset = Server.objects.all()
    serializer_class = ServerSerializer

注册路由

api/urls.py

from django.urls import path, include, re_path

from . import views

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'servers-router', views.ServerViewSet)

urlpatterns = [
        path('', include(router.urls)),
]

访问

http://127.0.0.1/api/server-router

ReadOnlyModelViewSet

查一组列表数据和具体一个对象的详情数据(字典类型)

对象详情数据,是通过路由传递主键 id 的值,之后利用 DRFRouters 注册的方式,不需要再添加额外的路由。
就是说列表数据和详情数据,只要注册一次路由即可。

from rest_framework.viewsets import  ReadOnlyModelViewSet

源码

class ReadOnlyModelViewSet(mixins.RetrieveModelMixin,
                           mixins.ListModelMixin,
                           GenericViewSet):
    """
    A viewset that provides default `list()` and `retrieve()` actions.
    """
    pass

ModelViewSet

集成如下功能:

  1. 增删改
  2. 查一组数据
  3. 查单个数据

源码

ModelViewSet 源码

class ModelViewSet(mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   mixins.ListModelMixin,
                   GenericViewSet):
    """
    A viewset that provides default `create()`, `retrieve()`, `update()`,
    `partial_update()`, `destroy()` and `list()` actions.
    """
    pass

GenericViewSet 源码

class GenericViewSet(ViewSetMixin, generics.GenericAPIView):
    """
    The GenericViewSet class does not provide any actions by default,
    but does include the base set of generic view behavior, such as
    the `get_object` and `get_queryset` methods.
    """
    pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值