Agregar más vistas a un enrutador o conjunto de vistas (Django-Rest-Framework)
Esencialmente, estoy tratando de encontrar una buena manera de adjuntar más vistas a un enrutador sin crear un enrutador personalizado.¿Cuál es una buena manera de lograr esto?
Aquí hay algo parecido a lo que estoy tratando de lograr. Se han cambiado los nombres de las variables y el método de ejemplo que quiero introducir está extremadamente simplificado por el bien de esta pregunta.
Enrutador
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()
Un ejemplo de otro tipo de método que necesito incluir. (Hay muchos de estos):
def get_locations(self, request):
""" Returns a list of location objects somehow related to MyObject """
locations = calculate_something()
return Response(locations)
El resultado final es que la siguiente URL funcionaría correctamente y se implementaría "limpiamente".
GET example.com/myobjects/123/locations