Python 如何将自定义DRFAPI视图映射到多个URL?
我有这样一个API视图:Python 如何将自定义DRFAPI视图映射到多个URL?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有这样一个API视图: class FollowersView(ListAPIView, RetrieveAPIView): serializer_class = FollowerSerializer queryset = Follower.objects.all() 我如何使它与每个操作列表和检索的不同URL一起工作 urlpatterns = [ path('followers/', FollowersView.as_view(), name='followers
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'),
]
urlpatterns=[
路径('followers/',FollowersView.as_view(),name='followers'),#所有请求都在这里捕获
路径('followers/',FollowersView.as_view(),name='followers-detail'),
]
现在,每个请求都被列表操作捕获。您需要在url末尾添加
$
符号,否则关注者/
和关注者/123/
都与列表
url匹配:
urlpatterns = [
path('followers/$', FollowersView.as_view(), name='followers'),
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'),
]
urlpatterns=[
路径('followers/$',FollowersView.as_view(),name='followers'),
路径('followers/',FollowersView.as_view(),name='followers-detail'),
]
或者,您可以在单个url中使用它:
urlpatterns = [
re_path('^followers(?:/(?P<pk>[0-9]+))?/$',
FollowersView.as_view(),
name='followers'),
]
urlpatterns=[
重新路径(“^followers(?:/(?P[0-9]+)?/$”,
followerView.as_view(),
name='followers'),
]
或者您可以尝试粘贴它们:
urlpatterns = [
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'),
path('followers/', FollowersView.as_view(), name='followers'),
]
urlpatterns=[
路径('followers/',FollowersView.as_view(),name='followers-detail'),
路径('followers/',FollowersView.as_view(),name='followers'),
]
您需要在url的末尾添加$
符号,否则followers/
和followers/123/
都与列表
url匹配:
urlpatterns = [
path('followers/$', FollowersView.as_view(), name='followers'),
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'),
]
urlpatterns=[
路径('followers/$',FollowersView.as_view(),name='followers'),
路径('followers/',FollowersView.as_view(),name='followers-detail'),
]
或者,您可以在单个url中使用它:
urlpatterns = [
re_path('^followers(?:/(?P<pk>[0-9]+))?/$',
FollowersView.as_view(),
name='followers'),
]
urlpatterns=[
重新路径(“^followers(?:/(?P[0-9]+)?/$”,
followerView.as_view(),
name='followers'),
]
或者您可以尝试粘贴它们:
urlpatterns = [
path('followers/<int:id>/', FollowersView.as_view(), name='followers-detail'),
path('followers/', FollowersView.as_view(), name='followers'),
]
urlpatterns=[
路径('followers/',FollowersView.as_view(),name='followers-detail'),
路径('followers/',FollowersView.as_view(),name='followers'),
]
目前,两条路径具有相同的查看功能。它们应该是不同的。@Abhyudai但这正是我要问的-如何使用不同的方法(从多个内置api视图类)为1个api视图创建不同的URL?目前两个路径都具有相同的视图函数。它们应该是不同的。@Abhyudai,但这正是我要问的-如何使用不同的方法(从多个内置api视图类)为1个api视图创建不同的URL?不,$在Django 2.0中被弃用,不能与path
方法一起使用。@Chiefir我提出了一个切换URL的解决方案。不,Django 2.0中不推荐使用$。您不能将它与path
方法一起使用。@Chiefir我提出了一个切换URL的解决方案。