ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。 视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上。如: classBookInfoViewSet(viewsets.ViewSet):deflist(self, request): ...defretrieve(self, request, pk=None): ... 在设置路由时...
借助IDEA(pycharm),查看被覆盖的list方法源码: 自定义的ModelViewSet子类的一个多继承父类ListModelMixin(源码如下) class ListModelMixin: """ List a queryset. """ def list(self, request, *args, **kwargs): queryset=self.filter_queryset(self.get_queryset()) page=self.paginate_queryset(queryse...
所以为了我们的方法便,这里直接引入ModelViewSet 其实ModelViewSet本质上就是帮我们继承了所有的Mixins,让我们只需要在定义路由的时候,分别定义不同的方法就够了! ModelViewSet源码: classModelViewSet(mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.UpdateModelMixin,mixins.DestroyModelMixin,mixins.ListModel...
path("viewsets/", views.CourseViewSet.as_view( {"get": "list", "post": "create"} ), name="viewsets-list"), path("viewsets/<int:pk>/", views.CourseViewSet.as_view( {"get": "retrieve", "put": "update", "patch": "partial_update", "delete": "destory"} ), name="viewsets...
ModelViewSet): """ This viewset automatically provides `list`, `create`, `retrieve`, `update` and `destroy` actions. Additionally we also provide an extra `highlight` action. """ queryset = Snippet.objects.all() serializer_class = SnippetSerializer 而其中继承的ModelViewSet方法 # rest_...
GenericViewSet 和 ViewSet 都继承了 ViewSetMixin,as_view 可以配置请求-函数映射 比如view = MyViewSet.as_view({'get': 'list', 'post': 'create'}) 代码语言:javascript 代码运行次数:0 运行 AI代码解释 classViewSetMixin:@classonlymethod defas_view(cls,actions=None,**initkwargs):#...defview(requ...
django-rest-framework-从零开始-9-视图类ModelViewSet的使用 1、前言 在之前(django-rest-framework-从零开始-7-通用的视图类的使用),我们通过简单几步,就可以创建出简单CRUD的drf项目,通过路由的list和detail路径, 分别指向不同的视图类,即List类和Detail类。
我有一个 Django 休息框架GenericViewset,我试图为它设置分页,如下所示: #settings.py REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 20 } #views.py class PolicyViewSet(viewsets.GenericViewSet): def list(self, request): queryset = ...
url.py 代码语言:javascript 代码运行次数:0 运行 AI代码解释 from rest_framework.routersimportDefaultRouter router=DefaultRouter()router.register(r'goods',GoodsListViewSet,base_name="goods")
ViewSetMixin提供了路由识别action的能力 支持分页、过滤、排序功能(因为有继承generics.GenericAPIView) 可以先声明queryset、serializer_class 未提供action方法 class ProjectViewSet(viewsets.GenericViewSet): class ProjectsViewSet(mixins.RetrieveModelMixin,mixins.UpdateModelMixin,mixins.DestroyModelMixin,mixins.ListMo...