我有一个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/
都与list
url匹配。:
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'),
]