我有一个视图集,其中有一些方法,getschedule是其中之一。

def getschedule(self, request):


在urls.py中,如果我这样映射方法getschedule

url(r'^event/(?P<pk>[0-9]+)/getschedule/$', EventSingleViewSet.getschedule, name='event-schedule'),


我收到此错误“ getschedule()缺少1个必需的位置参数:'request'


但是如果我像这样做映射

url(r'^event/(?P<pk>[0-9]+)/getschedule/$', event_getschedule, name='event-schedule'),
......
event_getschedule = EventViewSet.as_view({
    'get': 'getschedule'
}, renderer_classes=[JSONRenderer])


它有效,并给了我一个回应。

我不明白在第二种方法中如何将请求传递给方法。需要帮助了解这一点。

我也想知道如何使我的第一种方法起作用。

最佳答案

如果您的视图集已经绑定到路由器,则可以使用

@detail_route或@list_route将其指向具有您的viewset方法名称的URL。

检查文档的此部分:http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/

否则,使用扩展APIView的平面视图类并为其指向URL是有意义的。

当绑定到路由器时,视图集主要有用。

08-24 23:15