0

ich django-Rest-Rahmen des genericAPIViewsWelche Anfrage wird zum Abrufen von Daten aus der Datenbank basierend auf einigen gesendeten Daten verwendet?

Ich verwende mag einige Daten aus dem Frontend an das Backend senden und in Abhängigkeit von den gesendeten Daten sollten Django ein Modell abfragen und einige Daten zum Frontend zurückzukehren. Die gesendeten Daten sind geschützte Daten und können daher nicht in der URL angehängt werden, daher kann die GET-Anfrage nicht verwendet werden. Ich manipuliere die Datenbank nicht, sondern frage nur danach und gebe eine Antwort zurück (ein typischer GET-Anwendungsfall).

Jetzt ist genericAPIViews in DRF, kann ich nicht einen Blick finden, die dies tut:

Wie aus Tom Christie's GitHub page nur zwei Ansichten, die einen Beitrag Handler zu sehen:

  1. CreateAPIView: Rückkehr self.create()
  2. ListCreateAPIView: return self.create()

Wie zu sehen ist, haben beide diese Ansichten Post-Methoden, die Einträge in der Datenbank erstellen, die ich nicht will. Gibt es eine eingebaute Klasse, die meine Arbeit macht oder sollte ich Generics.GenericAPIView verwenden und meinen eigenen Post-Handler schreiben?

Derzeit ich generic.View bin mit der Post (self, Anfrage, * args, ** kwargs) hat

Antwort

0

Ich glaube, Sie ein paar Optionen zur Auswahl haben. Eine Möglichkeit besteht darin, ein ModelViewSet zu verwenden, das sehr nützlich sein kann, weil es die Kommunikation zwischen Ansichten, Serialisierern und Modellen gut verarbeitet. ist eine Verknüpfung zu django-rest-framework ModelViewSet-Dokumenten.

Dies sind die Aktionen, die es standardmäßig bietet (da es von GenericAPIView erbt):

.list(), .retrieve(), .create(), .update(), .partial_update(), .destroy().

Wenn Sie Sie die Methoden, die Sie wollen, indem Sie folgende Angaben nicht alle von ihnen nur wünschen kann :

class ModelViewSet(views.ModelViewSet): 
    queryset = App.objects.all() 
    serializer_class = AppSerializer 
    http_method_names = ['get', 'post', 'head'] 

Hinweis: http_method_names scheint von Django> = 1,8

zu arbeiten

Quelle:Disable a method in a ViewSet, django-rest-framework

Verwandte Themen