Ich verwende den Standard-Router von Django Rest Framework und versuche, meine Links anzupassen.
Wie richte ich etwas wie folgt ein:
/myModels/dosomething
( und lies es in der API-Root-Ansicht auflisten) /myModels/addModel?name=abc&address=xyz
Views.py
%Vor%urls.py
%Vor% Lassen Sie mich zeigen, wie ViewSet
und router
verwendet werden:
Nach defaultrouter muss Ihr Viewset die Ansichten in der Klasse deklarieren .
Ich gebe ein Beispiel über Benutzer-API und führe Sie wie folgt:
%Vor% Wenn ich das UserViewSet mit basic restful api abgeschlossen habe, registriere ich mich in router
:
Also wird mit entsprechenden URLs generiert:
list
und create
sind mit der entsprechenden URL verknüpft: /users
retrieve
, partial_update
und destroy
sind mit der entsprechenden URL verknüpft: /users/<email>
Angenommen, Sie müssen mehr benutzerdefinierte URLs hinzufügen, sollten Sie list_route
oder detail_route
verwenden, um den Viewset zu erweitern:
Also ist die neue Aktion mit der entsprechenden URL:
login
ist mit der entsprechenden URL verknüpft: /users/login
Ich hoffe, es kann dir helfen.
Sie können einem Standard-Router weitere Endpunkte hinzufügen, indem Sie @detail_route
oder @list_route
decorators für Ansichten verwenden.
@list_route
erstellt einen neuen Endpunkt in /myModel/new-route/
, während @detail_route
einen neuen Endpunkt in /myModel/<id-of-model>/new-route/
Wenn Sie jedoch die vom Standardrouter bereitgestellten Endpunkte vollständig ersetzen möchten, sollten Sie darüber nachdenken, einen benutzerdefinierten Router zu schreiben.
DRF-Dokumentation hat eine gute Erklärung für benutzerdefinierte Router sowie a Beispiel für einen benutzerdefinierten Router ist dort .
Tags und Links python django django-rest-framework