put()缺少1个必需的位置参数:“ pk”

时间:2019-06-25 07:33:25

标签: python django django-rest-framework put

我是Django的新手,我正在尝试更新记录。但是当我运行put方法时,出现这样的错误=>

  

put()缺少1个必需的位置参数:“ pk”

这是我的观点=>

from rest_framework.generics import get_object_or_404
from rest_framework.views import APIView
from rest_framework.response import Response

from .models import Allowance

from .serializers import AllowanceSerializer

# Create your views here.




class AllowanceAPIView(APIView):
    def get(self,request,pk=None):
        if pk:
            allowance=get_object_or_404(Allowance.objects.all(),pk=pk)
            serializer = AllowanceSerializer(allowance)
            return Response({serializer.data})
        allowance=Allowance.objects.all()
        serializer = AllowanceSerializer(allowance,many=True)
        return Response({"allowance":serializer.data})        


    def put(self,request,pk):
        save_allowance = get_object_or_404(Allowance.objects.all(),pk=pk)
        data = request.data.get('allowance')
        serializer = AllowanceSerializer(instance=save_allowance,data=data,partial=True)

        if serializer.is_valid(raise_exception = True):
            allowance_saved=serializer.save()

        return Response({"sucess": "Allowance '{}' updated successfully".format(allowance_saved.AllowID)})

    def delete(self,request,pk):
        #Get object with this pk
        allowance = get_object_or_404(Allowance.objects.all(),pk=pk)
        allowance.delete()
        return Response({"message":"Allowance with id '{}' has been deleted.".format(pk)},status=204)

这是我的网址=>

from django.conf.urls import url


from .views import AllowanceAPIView

urlpatterns = [
    url(r'^$', AllowanceAPIView.as_view(), name='post-listcreate'),
    url(r'^(?P<pk>\d+)/$', AllowanceAPIView.as_view(), name='post-listcreate')
]  

获取方法和发布方法都可以,只需在put方法中进行,并删除尚未进行测试。请帮忙。

0 个答案:

没有答案