【问题标题】:Postman API delete functionality issuePostman API 删除功能问题
【发布时间】:2019-07-31 13:59:48
【问题描述】:

我在网址中有以下内容:

path('api/delete/<int:pk>/', views.Person.as_view())

我正在使用邮递员进行测试,我是新手。在查询参数中,我输入

pk as the key and 4 as the value 

选择删除并 ...:8000/api/delete/?pk=4/

我收到 404 HTTP 错误,提示 Not found: /api/delete/

这是我的删除功能。

def delete(self, request, pk):
    print('inside delete')
    person = self.get_object(pk)
    print(person)
    person.delete()
    person.save()
    return Response(status = status.HTTP_204_NO_CONTENT)

它永远不会进入删除,这表明我的路径有问题。

谢谢

追踪:

Internal Server Error: /api/deletestory/2/
Traceback (most recent call last):
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/rest_framework/views.py", line 495, in dispatch
    response = self.handle_exception(exc)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/rest_framework/views.py", line 455, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/rest_framework/views.py", line 492, in dispatch
    response = handler(request, *args, **kwargs)
TypeError: delete() got multiple values for argument 'pk'
[10/Mar/2019 07:30:54] "DELETE /api/delete/2/ HTTP/1.1" 500 14281

查看:

class Person(APIView):

    def get_object(self, pk):
        try:
            print('inside get object')
            return Person.objects.get(pk = pk)
        except Person.DoesNotExist:
            raise Http404

    def get(self, request, pk):
        print('inside get')
        person = self.get_object(pk)
        serializer = PersonSerializer(person)
        return Response(serializer.data)

    def delete(self, pk):
        print('inside delete')
        person = self.get_object(pk)
        print(person)
        person.delete()
        return Response(status = status.HTTP_204_NO_CONTENT)

【问题讨论】:

  • 我也试过这个。 127.0.0.1:8000/api/delete/4
  • 你能添加你的完整视图吗?
  • 嘿@jpg,是的,不用担心,我已经为你添加了视图。干杯
  • 您的delete() 视图方法在两个示例中都不相同?是不是打错字了?
  • 我不敢相信,我遇到这个问题是因为一个错字!谢谢你的帮助!这就解决了。我觉得自己像个白痴。

标签: api django-rest-framework postman


【解决方案1】:

您应该向127.0.0.1:8000/api/delete/4/ 发出DELETE 请求(注意尾部斜杠)

【讨论】:

  • 您好,感谢您的回复,我已经尝试过了,现在我得到一个类型错误:delete() got multiple values for argument 'pk' 有什么想法吗?感谢您的帮助
  • 内部服务器错误:/api/delete/2/ Traceback(最近一次调用最后):文件“/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/ django/core/handlers/exception.py”,第 34 行,内部响应 = get_response(request) 文件“/Users/John/Desktop/proj/venv/lib/python3.7/site-packages/django/core/handlers /base.py",第 126 行,在 _get_response response = self.process_exception_by_middleware(e, request)
  • 对多条消息感到抱歉,它的踪迹很长。再次感谢
  • @OrangeSubmarine121 您应该将回溯添加到问题部分,使其更具可读性
  • @jpg 好点!我现在已经做到了。有什么想法吗?感谢您的帮助
猜你喜欢
  • 2014-05-29
  • 2020-11-09
  • 2019-11-07
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
相关资源
最近更新 更多