Django Rest Framework - объект не имеет атрибута post - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть этот URL в моем urls.py

 path('foo/bar/api', foo.APIBar.as_view(), name='foo-bar-api'),

и в моем view.py у меня есть этот класс, который передает API:

class APIBar(APIView):
def post(request, self, format=None):        
    date= request.POST['date']
    person= get_object_or_404(Person, id=request.POST['person'])  
    return Response(status=status.HTTP_201_CREATED)

И я пытаюсьчтобы отправить этот ajax:

$.ajax({
            url: "{% url 'foo-bar-api' %}",
            method: "POST",
            data: {
                date: date.val(),
                person: person.val()
            }
        });

Но Django дает мне эту ошибку:

AttributeError: 'APIBar' object has no attribute 'POST'

Я не знаю, почему это происходит.Я использовал ту же структуру в других моделях и работает как брелок, но эта выдает эту ошибку.

Пожалуйста, вы можете сказать мне, что я делаю не так?Я потратил несколько часов, пытаясь исправить эту ошибку.

1 Ответ

0 голосов
/ 28 ноября 2018

Ваш post порядок аргументов метода неправильный, правильные должны быть:

def post(self, request, format=None):
    date= request.POST['date']
    person= get_object_or_404(Person, id=request.POST['person'])  
    return Response(status=status.HTTP_201_CREATED)

Кстати, self здесь означает ссылку на объект.Так что это должен быть первый аргумент метода объекта.

...