Ich habe ein TV-Kanalmodell und habe ein Django-Restframework-Viewlet erstellt, das mir eine Liste und eine Detailansicht aus der Box gibt. Darüber hinaus habe ich zwei benutzerdefinierte Einzelobjektansichten namens all_events und now_and_next_event hinzugefügt, wie hier beschrieben: Zusätzliche Methoden für das Routing markieren . Das funktioniert bisher großartig.
%Vor%Nun möchte ich eine benutzerdefinierte Ansicht hinzufügen, die KEINE Einzelobjektansicht, sondern eine listenähnliche Ansicht ist:
%Vor%Wenn ich mein Viewlet deaktiviere und ein manuelles URL-Muster dafür hinzufüge, funktioniert es auch. Aber ich habe nicht herausgefunden, wie sie beide mit dem gleichen "api / channel /" - Präfix arbeiten können, oder was ich mehr möchte, wie ich die benutzerdefinierte Listenansicht-Klasse in mein Viewlet hinzufügen kann.
Hier sind meine Viewlet-URL-Muster:
%Vor%Und ich würde gerne auf meine Listenansicht zugreifen:
%Vor% Ab Django REST Framework 2.4 können Sie nun ViewSet
Methoden mit @list_route
dekorieren, um zu bekommen, wonach Sie suchen.
Der
@detail_route
Dekorator enthält in seinem URL-Musterpk
und ist für Methoden gedacht, die eine einzelne Instanz benötigen. Der@list_route
Decorator ist für Methoden gedacht, die auf einer Liste von Objekten operieren.
Diese ersetzen die alten @link
und @action
Dekoratoren, die nur als Detailrouten arbeiten konnten.
Wenn Sie eine Liste von Objekten haben wollen, dann brauchen Sie List-Methode in Ihrer ListApiView: Beispiel: Model ist ModelName und Serializer-Klasse ist SerializerClassname dann lautet der Code:
%Vor%Tags und Links django django-rest-framework