Django DRF:数据未通过修补方法传递到kwargs

Django DRF:数据未通过修补方法传递到kwargs,django,django-rest-framework,Django,Django Rest Framework,我正在为我的应用程序创建更新评论视图。这是我的代码: 序列化程序.py class CommentSerializer(serializers.ModelSerializer): class Meta: model = FitnessRecord fields = ('comment', 'id') class AddCommentView(APIView): permission_classes = [IsAuthenticated]

我正在为我的应用程序创建更新评论视图。这是我的代码:

序列化程序.py

class CommentSerializer(serializers.ModelSerializer):

    class Meta:
        model = FitnessRecord
        fields = ('comment', 'id')
class AddCommentView(APIView):
    permission_classes = [IsAuthenticated]

    def patch(self, request, *args, **kwargs):
        print(kwargs) # this is printing {}
        instance = get_object_or_404(FitnessRecord, pk=kwargs.get('id')) # error line
        print(22222) # not printing
        serializer = CommentSerializer(instance, data=request.data, partial=True)

        if serializer.is_valid():

            serializer.save()

            return Response(CommentSerializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
视图.py

class CommentSerializer(serializers.ModelSerializer):

    class Meta:
        model = FitnessRecord
        fields = ('comment', 'id')
class AddCommentView(APIView):
    permission_classes = [IsAuthenticated]

    def patch(self, request, *args, **kwargs):
        print(kwargs) # this is printing {}
        instance = get_object_or_404(FitnessRecord, pk=kwargs.get('id')) # error line
        print(22222) # not printing
        serializer = CommentSerializer(instance, data=request.data, partial=True)

        if serializer.is_valid():

            serializer.save()

            return Response(CommentSerializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我用邮递员发送数据。这就是错误:

{
    "detail": "Not found."
}
这可能是因为kwargs为空

我正在传递这些数据

{
    "comment": "gotham#bw9",
    "id": 14
}
如果需要,这是DRF设置

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DATE_INPUT_FORMATS': ['%d-%m-%Y'],
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    ),
    'TEST_REQUEST_DEFAULT_FORMAT': 'json'
}

您应该在url中传递kwarg
id
。见下面的例子

网址:
http://localhost:8000/comment/14/
请求方法:补丁 数据:
{
“评论”:“gotham#bw9”,
}

您应该在url中传递kwarg
id
。见下面的例子

网址:
http://localhost:8000/comment/14/
请求方法:补丁 数据:
{
“评论”:“gotham#bw9”,
}

您可以通过
请求获得发送的有效负载。数据

def补丁(self、request、*args、**kwargs):
print(request.data)#这将打印{“comment”:“gotham#bw9”,“id”:14}
...

您可以通过
请求获得发送的有效负载。数据

def补丁(self、request、*args、**kwargs):
print(request.data)#这将打印{“comment”:“gotham#bw9”,“id”:14}
...

< /代码>您正在传递的数据是请求正文,它将在请求数据中访问,而不是在KWARGSH中。请附加您的URLS.PY,也许您没有考虑通过<代码> ID >代码>。您正在传递的数据是请求正文,它将在请求数据中访问而不是在KWARGSH中。请附加您的URLS.PY,也许你没有考虑通过<代码> ID >代码>。我已经尝试过了。在添加url:path('add_comment/',views.AddCommentView.as_view())和url但此给定页面未找到错误时,我将url更改为:path('add_comment/',views.AddCommentView.as_view(),name='add_comment'),然后再次出现“未找到”错误。我已尝试此操作。在添加url:path('add_comment/',views.AddCommentView.as_view())和url但此给定页面未找到错误时,我将url更改为:path('add_comment/',views.AddCommentView.as_view(),name='add_comment'),再次出现“未找到”错误。