Wit*_*uth 2 python django ajax django-rest-framework
我的urls.py中有这个网址
path('foo/bar/api', foo.APIBar.as_view(), name='foo-bar-api'),
Run Code Online (Sandbox Code Playgroud)
在我的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)
Run Code Online (Sandbox Code Playgroud)
我正在尝试发送此ajax:
$.ajax({
url: "{% url 'foo-bar-api' %}",
method: "POST",
data: {
date: date.val(),
person: person.val()
}
});
Run Code Online (Sandbox Code Playgroud)
但是Django它给了我这个错误:
AttributeError: 'APIBar' object has no attribute 'POST'
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样。我在其他模型中使用了相同的结构,并且像一个吊饰一样工作,但是这给了这个错误。
拜托,你能告诉我我在做什么错吗?我花了几个小时尝试修复此错误。
您的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)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,self这里是指对象引用。因此,它应该是对象方法的第一个参数。