本质上,我试图找到一种在不创建自定义路由器的情况下将更多视图附加到路由器的好方法。有什么好的方法可以实现这个目标呢?
这与我想要实现的目标相当。为了这个问题,变量名已经改变,我想介绍的示例方法也被极其简化。
Router:
router = routers.SimpleRouter(trailing_slash=False)
router.register(r'myobjects', MyObjectViewSet, base_name='myobjects')
urlpatterns = router.urls
ViewSet
class MyObjectsViewSet(viewsets.ViewSet):
""" Provides API Methods to manage MyObjects. """
def list(self, request):
""" Returns a list of MyObjects. """
data = get_list_of_myobjects()
return Response(data)
def retrieve(self, request, pk):
""" Returns a single MyObject. """
data = fetch_my_object(pk)
return Response(data)
def destroy(self, request, pk):
""" Deletes a single MyObject. """
fetch_my_object_and_delete(pk)
return Response()
我需要包括另一种方法类型的一个示例。 (其中有很多):
def get_locations(self, request):
""" Returns a list of location objects somehow related to MyObject """
locations = calculate_something()
return Response(locations)
最终结果是以下 URL 可以正常工作并“干净”地实现。
GET example.com/myobjects/123/locations