我有一个 View 集和其中的一些方法,getschedule 就是其中之一。
def getschedule(self, request):
在 urls.py 中,如果我像这样映射方法 getschedule
url(r'^event/(?P<pk>[0-9]+)/getschedule/$', EventSingleViewSet.getschedule, name='event-schedule'),
我收到此错误“getschedule() 缺少 1 个必需的位置参数:'请求' “
但是如果我像这样进行映射,
url(r'^event/(?P<pk>[0-9]+)/getschedule/$', event_getschedule, name='event-schedule'),
......
event_getschedule = EventViewSet.as_view({
'get': 'getschedule'
}, renderer_classes=[JSONRenderer])
它有效并给了我回复。
我不明白请求是如何传递给第二种方法中的方法的。需要帮助理解这一点。
我还想知道如何使我的第一种方法发挥作用。
最佳答案
如果您的 View 集已经绑定(bind)到路由器,那么您可以使用
@detail_route 或 @list_route 将其指向包含 View 集方法名称的 URL。
检查这部分文档:http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/
否则,使用扩展 APIView 的平面 View 类并将 URL 指向它是有意义的。
View 集主要在绑定(bind)到路由器时有用。
关于python - Django URL 到 View 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36673277/