2016-02-22 92 views
2

我使用的是Django-rest-framework==3.3.2Django==1.8.8。我有一个简单GenericView特定网址的Django-rest-framework @detail_route

from rest_framework import generics 
from rest_framework.decorators import detail_route 

class MyApiView(generics.RetrieveAPIView): 
    serializer = MySerializer 
    def get(self, *args, **kwargs): 
     super(MyApiView, self).get(*args, **kwargs) 

    @detail_route(methods=['post']) 
    def custom_action(self, request) 
     # do something important 
     return Response() 

如果我使用Django的REST的框架提供了router,但是我手动创建我的所有URL,并希望做的detail_route同这工作得很好。

我不知道是否有可能对我来说,做这样的事情:

from django.conf.urls import patterns, url 
from myapi import views 
urlpatterns = patterns(
    '', 
    url(r'^my-api/$', views.MyApiView.as_view()), 
    url(r'^my-api/action$', views.MyApiView.custom_action.as_view()), 

当然,这第二个URL不起作用。这只是我想要做的一个例子。

在此先感谢。

回答

3

由于per the example from the Viewsets docs,您可以提取单个方法到观点:

custom_action_view = views.MyApiView.as_view({"post": "custom_action"}) 

你就可以自由地航线这是正常的:

urlpatterns = [ 
    url(r'^my-api/action$', custom_action_view), 
] 

我希望帮助。

+0

这就像一个魅力!感谢你的回答! – jarussi

+0

不客气:) –