Django REST framwork-06-使用 ViewSets 视图集和 Routers 路由
Posted shark_西瓜甜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django REST framwork-06-使用 ViewSets 视图集和 Routers 路由相关的知识,希望对你有一定的参考价值。
文章目录
GenericViewSet
重写了
.as_view
方法,和 DRF 的 Routers 结合,可以简化路由配置。
返回一组列表数据
定义视图
from rest_framework import viewsets
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
的值,之后利用 DRF 的Routers
注册的方式,不需要再添加额外的路由。
就是说列表数据和详情数据,只要注册一次路由即可。
源码
class ReadOnlyModelViewSet(mixins.RetrieveModelMixin,
mixins.ListModelMixin,
GenericViewSet):
"""
A viewset that provides default `list()` and `retrieve()` actions.
"""
pass
ModelViewSet
集成如下功能:
- 增删改
- 查一组数据
- 查单个数据
源码
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
以上是关于Django REST framwork-06-使用 ViewSets 视图集和 Routers 路由的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework 使 OnetoOne 关系感觉就像是一个模型
如何使 Django REST JWT 身份验证与多个 Web 服务器一起扩展?
如何使 Vue.js 将散列密码发布到 Django REST API AbstractBaseUser 自定义模型?