pmo*_*niq 11 django-rest-framework
我有一个关于DjangoREST和路由器的非常基本的问题.
当我需要注册rest_framework.viewsets时,我正在做这样的事情(来自documentaton的例子):
router = routers.SimpleRouter()
router.register(r'users', UserViewSet)
router.register(r'accounts', AccountViewSet)
Run Code Online (Sandbox Code Playgroud)
但是如何添加来自rest_framework.generics包的路由器视图?我应该bild自定义路由器(http://www.django-rest-framework.org/api-guide/routers/#custom-routers)?什么是最佳做法?
但是如何添加来自rest_framework.generics包的路由器视图?
你不知道 ViewSets添加了几个兼容性层rest_framework.generics
,以便与路由器一起使用。
我应该选择定制路由器(http://www.django-rest-framework.org/api-guide/routers/#custom-routers)吗?最佳做法是什么?
如果要使用非视图集视图,则只能编写常规的Django url。
我的感觉是,真正的问题是完全不同的,类似于“如何将视图集仅限制为某些操作”。
在这种情况下,的声明ModelViewSet
提供了答案:
class ViewSet(ViewSetMixin, views.APIView):
"""
The base ViewSet class does not provide any actions by default.
"""
pass
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
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
Run Code Online (Sandbox Code Playgroud)
如您所见,您可以ModelViewSet
通过选择所需的mixins并从中继承来专门化GenericViewSet
。
归档时间: |
|
查看次数: |
2533 次 |
最近记录: |