Ich verwende Django-Rest-Framework (neueste) für REST-API, und implementiert einige Testfälle in Django mit eingebauten Test-Client.django-rest-framework http setzen fehlgeschlagen mit 415 auf django 1.5
folgenden django Testfall wurde mit django Version < 1,5
self.client.put('/core/accounts/%s/'% self.account.id,
data = prepare_dict(self.account),
HTTP_AUTHORIZATION=self.token)
verbesserte Feinwerk 1,5 bis django, alle Tests außer Tests HTTP PUT Zusammenhang geben werden, während in der Frage der Suche fanden diese @https://docs.djangoproject.com/en/dev/releases/1.5/#options-put-and-delete-requests-in-the-test-client
Wenn Sie den Datenparameter in einer PUT-Anfrage unter Verwendung wurden ohne content_type, müssen Sie Ihre Daten verschlüsseln, bevor er es auf den Test Client und legen Sie das Argument content_type.
Also, aktualisiert meinem Test diese Änderung widerzuspiegeln und versuchte folgenden, aber immer noch http bekommen 415 statt http 200
from django.test.client import MULTIPART_CONTENT, BOUNDARY, encode_multipart
self.client.put('/core/accounts/%s/'% self.account.id,
data = encode_multipart(BOUNDARY, prepare_dict(self.account)),
content_type=MULTIPART_CONTENT,
HTTP_AUTHORIZATION=self.token)
Jede Idee, was ich fehle? PS: Alle Funktionen funktionieren gut von django-Rest-Rahmen integrierten Web-UI
Tom, vor allem danke für Djnago-Rest-framwork. Wie Sie gefragt haben, habe ich überprüft. response.data = {u'detail ': u "Nicht unterstützter Medientyp" multipart/form-data; boundary = BoUnDaRyStriNg' in request. "} 2. Standard-Parser auf 'rest_framework.parsers.JSONParser' gesetzt 3. Keine parser_classes als Ansicht Attribut. –
set parser_classes = (JSONParser,) für die Ansicht, aber keinen Unterschied –
OK, Entfernen von default_parser (JSON) aus den Einstellungen hat die Magie. Beim Einrahmen in das Framework kann diese Zeile in [email protected] parser = self.negotiator.select_parser (self, self.parsers) nicht den richtigen Parser aushandeln, wenn der Standardparser (JSON) gesetzt ist und der Inhaltstyp 'multipart/form' ist -data ' –