我想知道如何在给定特定ID的情况下访问特定对象,然后对其进行更新。我目前收到“不允许使用405方法”错误。
如上所述是否可以通过ID访问对象,还是必须以其他方式解决问题?
我的代码如下:
views.py
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from home.models import example
from home.serializers import exampleSerializer
@api_view(['GET', ])
def exampleview(request):
try:
ex=example.objects.all()
except example.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method=="GET":
serializer=exampleSerializer(ex, many=True)
return Response(serializer.data)
@api_view(['PUT', ])
def exampleputview(request):
try:
ex1=example.objects.get(id=id)
except example.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method=="PUT":
serializer=exampleSerializer(ex1, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(status=status.HTTP_404_NOT_FOUND)
urls.py
from django.contrib import admin
from django.conf.urls import url
from home import views
urlpatterns = [
url('admin/', admin.site.urls),
url('home/',views.exampleview),
url('home/<int:id>/',views.exampleputview),
]
答案 0 :(得分:1)
PUT方法需要一个id值,
尝试将 id 放入函数参数
@api_view(['PUT', ])
def exampleputview(request, id):
try:
ex1=example.objects.get(id=id)
except example.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method=="PUT":
serializer=exampleSerializer(ex1, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(status=status.HTTP_404_NOT_FOUND)