django rest framework post 方法给出错误 "Method "POST“不允许”
django rest framework post method giving error "Method "POST" not allowed"
我收到错误 'Method "POST" not allowed' 而 运行 api。我是 DRF 的新手,不知道我做错了什么。
GET 方法工作正常。我对 POST 方法有疑问。
我的代码如下
view.py:
from django.contrib.auth.models import User
from django.http import Http404
from django.shortcuts import get_object_or_404
from restapp.serializers import UserSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from django.http import HttpResponse
class UserList(APIView):
def get(self, request, format=None):
users = User.objects.all()
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializer.py:
from django.contrib.auth.models import User
from .models import Question,Choice
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'first_name', 'last_name', 'email')
url.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from restapp import views
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^users/', views.UserList.as_view()),)
您的代码缩进不正确。 post 方法需要在 UserList(APIView)
class 内部。现在被定义为独立函数。
我收到错误 'Method "POST" not allowed' 而 运行 api。我是 DRF 的新手,不知道我做错了什么。 GET 方法工作正常。我对 POST 方法有疑问。
我的代码如下
view.py:
from django.contrib.auth.models import User
from django.http import Http404
from django.shortcuts import get_object_or_404
from restapp.serializers import UserSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from django.http import HttpResponse
class UserList(APIView):
def get(self, request, format=None):
users = User.objects.all()
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializer.py:
from django.contrib.auth.models import User
from .models import Question,Choice
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'first_name', 'last_name', 'email')
url.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from restapp import views
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^users/', views.UserList.as_view()),)
您的代码缩进不正确。 post 方法需要在 UserList(APIView)
class 内部。现在被定义为独立函数。