У меня есть класс-представление с определенным методом post
, который является конечной точкой загрузки файла.405 Метод не разрешен при загрузке файла
Запрос выполнен с использованием модуля ng-file-upload
.
При выполнении запроса на отправку я получаю сообщение об ошибке 405 Method not allowed
.
Если я пытаюсь сделать POST на тот же URL с теми же параметрами (кроме файла), он работает нормально.
я могу увидеть в Firebug, что заголовки отклика различны:
- При отправке запроса через POST, разрешенный метод, формирующий ответ является POST и OPTIONS
- При отправке через загрузку, они GET, HEAD и ОПЦИИ
Что может быть причиной этого?
[править] В соответствии с просьбой, здесь (упрощенный) код метода обработки вид:
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
к URL/order/save-order
я получаю сообщение об ошибке сказав, что мне нужно слэш - с
upload
к URL/order/save-order/
я получаю 405 - С
post
к URL/order/save-order
он работает нормально (исходный код) - С
post
к URL/order/save-order/
Я получаю 404
Можете ли вы опубликовать код функции/класса представления, который обрабатывает этот запрос? – solarissmoke