put () отсутствует 1 обязательный позиционный аргумент: 'pk' - PullRequest
0 голосов
/ 25 июня 2019

Я новичок в 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)

Вот мой URL =>

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')
]  

Метод Get и метод post в порядке, просто используйте метод put и удалите еще не тестируя. Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...