2016-05-09 2 views
0

У меня есть класс-представление с определенным методом 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
+1

Можете ли вы опубликовать код функции/класса представления, который обрабатывает этот запрос? – solarissmoke

ответ

0

Оказалось, мои просьбы были на самом деле сделано в 2 различных URL-адресов, следовательно, загрузку терпит неудачу.

Смежные вопросы