zoukankan      html  css  js  c++  java
  • REST功能模块-Viewsets&routers

    Viewsets:用于处理抽象概念,它允许开发人员专注对API的状态和交互进行建模,并根据通用约定自动处理URL构造

    ViewSet类与View类几乎相同,除了提供诸如read或update,而不是诸如get或put的处理程序方法

    重构使用ViewSets

    from rest_framework import viewsets
    from .models import Goods
    from .serializers import GoodsSerializer
    
    
    
    class GoodsSetPagination(PageNumberPagination):
        page_size = 10
        page_size_query_param = 'page_size'
        page_query_param = 'p'
        max_page_size = 100
    
    class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
        queryset = Goods.objects.all()
        serializer_class = GoodsSerializer
        pagination_class = GoodsSetPagination

    明确的将ViewSets绑定到url

    当我们定义URL conf时,处理程序方法只会绑定到动作,为了看看到底发生了什么,首先从我们到ViewSets 中明确到创建一组视图

    在该goods/urls.py文件中,将我们到ViewSet类绑定到一组具体到视图中

    from goods.views import GoodsListViewSet
    
     goods_list = GoodsListViewSet.as_view({
         'get': 'list'
     })
    
    
    urlpatterns = [
        url(r"goods/$", goods_list, name="goods_list"),
    
    
    ]

    使用routers

    因为我们使用到是ViewSet类而不是View类,所以我们实际上不需要自己设计URL,将资源连接到视图和URL的约定可以使用Router类自动处理,

    我们只需要用路由器注册适当的视图集,然后让其完成

    from django.conf.urls import url, include
    from goods.views import GoodsListViewSet
    from rest_framework.routers import DefaultRouter
    
    router = DefaultRouter()
    router.register(r'goods', GoodsListViewSet)
    
    urlpatterns = [
        url(r'^', include(router.urls)),
    
    ]

    路由器注册视图类似于urlpattern,我们包含两个参数-视图的url前缀和视图本身,

    DefaultRouter我们使用的类也为我们自动创建了API根视图

  • 相关阅读:
    魅族多机房部署方案-tech_meizu-ChinaUnix博客
    环信首席架构师:一个单元化架构的例子-CSDN.NET
    双活数据中心解决方案(最新)_图文_百度文库
    阿里巴巴分布式数据库服务DRDS研发历程
    OpenDigg
    Qcon
    有赞应用层网关剖析
    Enterprise Architect-工具-火龙果软件
    (80 条消息) 哪些管理类的书籍值得推荐?
    【图文】拉姆查兰-领导梯队_百度文库
  • 原文地址:https://www.cnblogs.com/YingLai/p/9136737.html
Copyright © 2011-2022 走看看