我有一个像这样的 API View :
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'),
]
现在每个请求都被列表操作捕获。
最佳答案
您需要在网址末尾添加 $
符号,否则 followers/
和 followers/123/
都会匹配 列表
网址:
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'),
]
关于python - 如何将自定义 DRF api View 映射到多个 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877672/