Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将自定义DRFAPI视图映射到多个URL?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何将自定义DRFAPI视图映射到多个URL?

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

我有这样一个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'),
]
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的解决方案。