gpt4 book ai didi

django-rest-framework - 如何在 Django REST 中使用路由器不是用于 View 集,而是用于通用 View ?

转载 作者:行者123 更新时间:2023-12-04 02:20:42 24 4
gpt4 key购买 nike

我有一个关于 DjangoREST 和路由的非常基本的问题。

当我需要注册 rest_framework.viewsets 时,我正在做这样的事情(来自文档的示例):

router = routers.SimpleRouter()
router.register(r'users', UserViewSet)
router.register(r'accounts', AccountViewSet)

但是如何添加到来自 rest_framework.generics 包的路由器 View ?我应该使用定制路由器( http://www.django-rest-framework.org/api-guide/routers/#custom-routers)吗?最佳做法是什么?

最佳答案

But how to add to router views that are from rest_framework.generics package?



你没有。 ViewSets 为 rest_framework.generics 添加了几个兼容层为了与路由器一起工作。

Should I bild custom router (http://www.django-rest-framework.org/api-guide/routers/#custom-routers)? What is the best practice?



如果你想使用非 View 集 View ,你将不得不编写常规的 Django url。

我的感觉是真正的问题是完全不同的,就像“我如何将 View 集限制为仅某些 Action ”。

在这种情况下, 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

如您所见,您可以专门化 ModelViewSet通过选择所需的 mixin 并从 GenericViewSet 继承.

关于django-rest-framework - 如何在 Django REST 中使用路由器不是用于 View 集,而是用于通用 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com