По сути, я пытаюсь найти хороший способ подключить больше видов к маршрутизатору без создания настраиваемого маршрутизатора. Какой хороший способ выполнить это?
Вот что-то вроде того, что я пытаюсь выполнить. Имена переменных были изменены, и примерный метод, который я хочу ввести, чрезвычайно упрощен ради этого вопроса.
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