如何将自定义DRF api视图映射到多个URL



我有一个API视图,如下所示:

class FollowersView(ListAPIView, RetrieveAPIView):
serializer_class = FollowerSerializer
queryset = Follower.objects.all()

我如何使它与不同的URL工作,每个动作列表和检索?

urlpatterns = [
path('followers/', FollowersView.as_view(), name='followers'),    #all requests are captured here
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'),
]

到目前为止,每个请求都被列表操作捕获。

您需要在url的末尾添加$符号,否则followers/followers/123/都与listurl匹配。:

urlpatterns = [
path('followers/$', FollowersView.as_view(), name='followers'),
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'), 
]

或者你可以把它放在一个网址上:

urlpatterns = [
re_path('^followers(?:/(?P<pk>[0-9]+))?/$',
FollowersView.as_view(),
name='followers'),
]

或者你可以试着缝合它们:

urlpatterns = [       
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'), 
path('followers/', FollowersView.as_view(), name='followers'),
]

最新更新