我有一个基于类的视图,其中定义了post
方法,这是文件上传的终点。
请求是使用ng-file-upload
模块进行的。
执行上传请求时,收到405 Method not allowed
错误。
如果我尝试使用相同的参数(文件除外)对相同的URL进行POST,则表明它正常工作。
我可以在Firebug中看到响应标头不同:
导致这种情况的原因是什么?
[编辑] 根据要求,这是视图处理方法的(简化)代码:
def order_data(order, request):
"""
Return a serialized order with added permission information
"""
data = OrderSerializer(order).data
# Add a few custom fields on the data dict
return data
class SaveOrder(APIView):
def post(self, request):
data = request.data.get('order')
if data.get('id', None) is not None:
if not request.user.has_perm('orders.modify_order'):
return HttpResponseForbidden()
else:
order = Order.objects.get(id=data['id'])
else:
if not request.user.has_perm('orders.create_order'):
return HttpResponseForbidden()
else:
order = Order()
# Fill in order using the fields in data
order.save()
return JsonResponse(order_data(order, request))
[edit2]实际上,这种行为并不完全是我之前所描述的:
upload
来定位/order/save-order
我收到错误消息,说我需要一个尾随斜杠upload
来定位/order/save-order/
我得到了405 post
来提醒/order/save-order
它的工作正常(原始代码)post
来定位/order/save-order/
我得到了404 答案 0 :(得分:0)
原来我的请求实际上是针对2个不同的网址完成的,因此上传失败了。