zoukankan      html  css  js  c++  java
  • (4)DRF框架——视图集和自定义生成路由

    视图集

    1、路由匹配规则改变
    2、视图中定义方法不再按照请求方式定义
    导入地址

    #四个视图集导入地址
    from rest_framework.viewsets import ViewSet,GenericViewSet,ModelViewSet,ReadOnlyModelViewSet

    两个基本视图集

    1. ViewSet

    继承自APIview,作用也与APIView基本类似,提供了身份认证,权限校正,流量管理等。

    在ViewSet中,没有提供任何动作的方法,需要我们自己实现动作的方法

    2. GenericCiewset

    继承自GenericAPIview

    两个拓展视图集

    1.ModelViewSet

    继承自GenericAPIview 且继承了五个拓展类视图

    2.ReadOnlyModelViewSet

    继承自GenericAPIview 且继承了 ListModelMixin 和 RetrieveModelMixin这两个拓展类视图

    使用

    url

    from django.conf.urls import url
    from . import AAAPIview
    urlpatterns = [
        url(r'^books/$',AAAPIview.BooksView.as_view({#不需要查询参数
            'get':'list',#获取全部数据
            'post':'create',#新建数据
        })),
        url(r'^books/(?P<pk>d+)/$',AAAPIview.BooksView.as_view({#需要查询参数
            'put':'update',#更新数据
            'get':'retrieve',#获取单个数据
            'delete':'destroy'#删除数据
        }))
    ]

    view

    from .models import BookInfo
    from .serializer import BookModelSerislzier
    from rest_framework.viewsets import ModelViewSet
    
    class BooksView(ModelViewSet):#继承了ModelViewSet
        #查询多个 和新增数据
        queryset = BookInfo.objects.all()#指定当前类视图使用的查询集数据
        serializer_class = BookModelSerislzier #指定类视图使用的序列化器类 注意后面没有括号 只是类名

    自定义生成路由

    from . import AAAPIview
    from rest_framework.routers import SimpleRouter
    urlpatterns = []
    
    router = SimpleRouter()#实例化
    router.register('books',AAAPIview.BooksView,base_name='books')#为对象指定 路由地址 视图(这个视图必须是继承视图集的) 别名
    urlpatterns +=router.urls #添加进urlpatterns
  • 相关阅读:
    Props属性
    逆卷积:convtranspose2d(fractionally-strided convolutions)
    nn.ReflectionPad2d(镜像填充)
    conv1*1的作用
    如何将jupyter中的.ipynb文件转换成python中的.py文件
    低光图像增强学习
    pytorch 中的variable函数
    BCELoss和BCEWithLogitsLoss
    正则化的理解
    网络压缩方法总结
  • 原文地址:https://www.cnblogs.com/xujin247/p/11726772.html
Copyright © 2011-2022 走看看