Dodawanie kolejnych widoków do routera lub widoku (Django-Rest-Framework)
Zasadniczo próbuję znaleźć dobry sposób na dołączenie większej liczby widoków do routera bez tworzenia niestandardowego routera.Jaki jest dobry sposób, aby to osiągnąć?
Oto coś w rodzaju odpowiednika tego, co próbuję osiągnąć. Zmieniono nazwy zmiennych i przykładowa metoda, którą chcę wprowadzić, jest niezwykle uproszczona ze względu na to pytanie.
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()
Jeden przykład innego typu metody, który muszę uwzględnić. (Jest ich wiele):
def get_locations(self, request):
""" Returns a list of location objects somehow related to MyObject """
locations = calculate_something()
return Response(locations)
Końcowy wynik jest taki, że następujący adres URL działałby poprawnie i byłby implementowany „czysto”.
GET example.com/myobjects/123/locations