我有一个Scheme
视图集,其中包含一个名为optimize
的详细路径。定义如下:
@detail_route(methods=['get’])
def optimize(self, request, pk=None):
pass
我正在使用DefaultRouter()
生成网址,最终为/schemes/:id/optimize
。我希望在我的视图集上有第二个方法,在特定位置运行优化,因此网址可能看起来像/schemes/:id/optimize_by_location/:id
。
如何在我的视图中设置此功能,其中路线有2个级别?
答案 0 :(得分:1)
我认为使用默认路由器是不可能的。所以你应该:
/schemes/:id/optimize_by_location/:id
网址(可能更简单但不那么通用):有关这方面的更多信息,请参阅django rest tutorial:Binding ViewSets to URLs explicitly
from django.conf.urls import patterns, url
from .views import MyViewSet
optimize_view = MyViewSet.as_view({'get': 'optimize_specific_location'},)
urlpatterns = [
url(r'^schemes/(?P<id>[0-9]+)/optimize_by_location/(?P<loc_id>[0-9]+)/$',
optimize_view),
]