Почтовый API проблема удаления функциональности - PullRequest
0 голосов
/ 09 марта 2019

У меня в URL есть следующее:

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, предлагая Не найдено: / 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)

1 Ответ

1 голос
/ 10 марта 2019

Вы должны сделать запрос DELETE: 127.0.0.1:8000/api/delete/4/ (обратите внимание на косую черту)

postman screenshot

...