Ich versuche eine Ansicht zu erstellen, die POST-Anfragen akzeptiert und neue Instanzen meines Modells erstellt (siehe unten im Beitrag). Ich folge this Tutorial. Das Problem ist, dass, wenn ich auf die URL zugreife, die mit Ansicht assoziiert ist, die von CreateAPIView erbt, sehe ich kein Formular in HTML-Darstellung der API für die Erstellung neuer Instanzen und sehe auch, dass es GET-Anfragen akzeptiert, nicht POST wie in der Dokumentation erwähnt.Django Rest Framework - CreateAPIView lässt keine POST-Methode verwenden
Seite sieht wie folgt aus
Mein views.py
from django.shortcuts import render
from rest_framework.generics import ListAPIView, CreateAPIView
from datingapp.models import Profile
from .serializers import ProfileSerializer, ProfileCreateSerializer
class ProfilesAPIView(ListAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
class ProfileCreateAPIView(CreateAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileCreateSerializer
Mein urls.py
from django.conf.urls import url
from django.contrib import admin
from datingapp.views import ProfilesAPIView, ProfileCreateAPIView
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'api/profiles/', ProfilesAPIView.as_view(), name='list'),
url(r'api/profiles/create/$', ProfileCreateAPIView.as_view(), name='create')
]
Mein serializers.py
from rest_framework.serializers import ModelSerializer
from datingapp.models import Profile
class ProfileSerializer(ModelSerializer):
class Meta:
model = Profile
fields = [
'name',
'age',
'heigth'
'location',
]
class ProfileCreateSerializer(ModelSerializer):
class Meta:
model = Profile
fields = [
'name',
'age',
'heigth'
'location',
]
In meiner settings.py habe ich crispy_forms installiert.
Was mache ich falsch?
UPD: hier ist das, was ich
erreichen wollen Wie Sie dort sehen, ist eine Form, und es nimmt nur POST und sagt auch, dass GET nicht
Fragen Sie sich, warum 'CreateApiView'' GET' nicht akzeptiert? Welche Antwort erwarten Sie? Wenn Sie mehrere Methoden auf derselben Route verwenden möchten, können Sie ModelViewSets verwenden. –
Ich möchte dasselbe erreichen wie auf dem Screenshot unten –
Ok. Ich habe es falsch verstanden. Deine Frage macht jetzt Sinn. Die Antwort sieht nicht so aus, wie ich es von einer CreateAPIView erwarten würde. Es sieht aus wie eine 'ListAPIView' –