2017-05-25 6 views
0

Ich verwende eine generische CreateAPIView, um ein Modell in der Datenbank zu speichern. Hier ist mein Code:Djangorest Framework same Generische Create View mit GET und POST

class AppointmentCreateAPIView(generics.CreateAPIView): 
    permission_classes = (AppointmentCreatePermission,) 
    queryset = Appointment.objects.all() 
    serializer_class = AppointmentSerializer 

Und in meiner urls.py Datei, ich habe dies:

urlpatterns[ 
    url(r'^appointments/create', AppointmentCreateAPIView.as_view()), 
] 

Diese URL offensichtlich unterstützt die POST-Operation. Ich möchte jedoch dieselbe URL verwenden, um eine GET-Anforderung zu bearbeiten, mit der die Daten abgerufen werden, die zum Ausfüllen des Formulars zur Terminerstellung erforderlich sind. Ich verstehe, dass ich separate URLs für get und post verwenden kann, aber das ist nicht das, wonach ich suche. Ist es möglich, dass ich die gleiche URL, aber mit verschiedenen HTTP-Verb, die Ansicht würde in der Lage, sowohl GET und POST-Anfrage zu behandeln?

+0

Haben Sie einen Fehler erhalten, wenn mit 'GET' Methode –

+0

Ich bin bereit, meine Logik zu ändern, aber ich mag das gleiche die URL zu halten. Ist es möglich, zwei verschiedene Ansichten mit der gleichen URL, aber mit verschiedenen http Verb? –

+0

Ich denke, das ist nicht möglich. Unterschiedliche URL, aber gleiche Funktion ist möglich, aber in Ihrem Fall GET-Methode vollständig deaktiviert. –

Antwort

1

Sie können dies tun, indem Sie manuell get Methode zu Ihrer Ansicht hinzufügen, würde es etwa so aussehen. Code unten funktioniert wahrscheinlich nicht, aber gibt Ihnen allgemeine Idee.

from rest_framework.response import Response 

class AppointmentCreateAPIView(generics.CreateAPIView): 
    permission_classes = (AppointmentCreatePermission,) 
    queryset = Appointment.objects.all() 
    serializer_class = AppointmentSerializer 

    def get(self, request, *args, **kwargs): 
     serializer = AppointmentSerializer({your_data}) 
     return Response(serializer.data)