【发布时间】:2022-11-18 20:43:38
【问题描述】:
我有一个带有 2 个路由 some_resource/ 和 some_resource/<id> 的 API,我想实现正常的 CRUD 操作(列出、检索、创建、更新、删除)。然而,我不想使用 ViewSet因为我想为每个视图设置 1 个类。因此,为了清楚起见,我需要手动设置路线。 :
class SomeResourceRetrieveView(APIView):
def get(self, request, pk, *args, **kwargs):
...
class SomeResourceListView(APIView):
def get(self, request, *args, **kwargs):
...
class SomeResourceCreateView(APIView):
def post(self, request, *args, **kwargs):
...
所以在 urls.py 中它看起来像这样
url_patterns = [
path("some_resource/", InvitationTeamAccessListAPI.as_view(), name="some-resource-list"),
path("some_resource/", InvitationTeamAccessCreateAPI.as_view(), name="some-resource-create"),
path("some_resource/<int:pk>", InvitationTeamAccessRetrieveAPI.as_view(), name="some-resource-retrieve"),
]
但是,当我在some_resource/ 上使用 POST 时,我得到了 405。我认为 django 在第一个匹配的路由处停止并且没有找到 post 的实现。有没有办法将我所有的视图都插入到相同的模式中,但将它们保留为单独的类?
【问题讨论】:
-
对不同的视图使用不同的 url,例如:对发布请求使用“some_resource/create”..
-
我想尽可能保持 API 资源 url 不变,因此不能选择不同的 url
标签: python django django-rest-framework