Ich habe eine klassenbasierte Ansicht mit einer definierten Methode post
, die den Endpunkt eines Datei-Uploads darstellt.405 Methode beim Hochladen der Datei nicht zulässig
Die Anfrage wird mit dem Modul ng-file-upload
gestellt.
Beim Ausführen der Upload-Anfrage erhalte ich einen 405 Method not allowed
Fehler.
Wenn ich versuche, einen POST an dieselbe URL mit den gleichen Parametern (außer für die Datei) zu machen, funktioniert es gut.
Ich kann in Firebug sehen, dass die Antwort-Header sind unterschiedlich:
- Wenn die Anforderung über POST senden, die erlaubt Methode Antwort sind POST und OPTIONS
- Wenn per Upload zu senden, sind sie GET, HEAD und OPTIONEN
Was könnte das verursachen?
[Bearbeiten] Wie gewünscht, hier ist der (vereinfacht) Code der Ansicht Handhabung Methode:
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] Eigentlich ist das Verhalten nicht genau das, was ich beschrieben habe früher:
- Mit
upload
/order/save-order
url ich eine Fehlermeldung erhalten, dass ich einen Schrägstrich - Mit
upload
müssen/order/save-order/
url ich ein 405 - Mit
post
/order/save-order
url es in Ordnung (Original-Code) - Mit
post
arbeitet mit url/order/save-order/
Ich erhalte eine 404
Können Sie den Code für die View-Funktion/Klasse, die diese Anfrage bearbeitet, veröffentlichen? – solarissmoke