2016-09-23 1 views
1

Ich versuche, Daten an meine API POST. Ich habe ein Modell mit einem image Feld, in dem:"Post-Image-Daten mit POSTMAN"

image = models.ImageField() 

Ich habe ein Bild auf meiner lokale Box, die ich zu senden versuche. Sendet ich es richtig?

{ 
    "id": "3", 
    "uid":"273a0d69", 
    "uuid": "90", 
    "image": "@/home/user/Downloads/tt.jpeg" 
} 

Antwort

10

Das ist nicht, wie Sie Datei auf Briefträger senden. Was Sie getan haben, ist eine Zeichenfolge, die der Pfad Ihres Bildes ist, nichts mehr.

Was Sie tun sollten, ist;

  1. Nachdem Sie die Anforderungsmethode auf POST eingestellt haben, klicken Sie auf die Registerkarte "body".
  2. Formulardaten auswählen. In der ersten Zeile sehen Sie Textfelder mit dem Namen Schlüssel und Wert. Schreibe 'Bild' in den Schlüssel. Sie sehen den Werttyp, der standardmäßig auf 'Text' eingestellt ist. Machen Sie es Datei und laden Sie Ihre Datei hoch.
  3. Wählen Sie dann 'roh' und fügen Sie Ihre JSON-Datei. Direkt neben der binären Auswahl sehen Sie, dass auf 'Text' geklickt wird. Mach es JSON.

form-data section

raw section

Sie sind bereit zu gehen.

In Ihrer Django Ansicht

from rest_framework.views import APIView 
from rest_framework.parsers import MultiPartParser 
from rest_framework.decorators import parser_classes 

@parser_classes((MultiPartParser,)) 
class UploadFileAndJson(APIView): 

    def post(self, request, format=None): 
     thumbnail = request.FILES["file"] 
     info = json.loads(request.data['info']) 
     ... 
     return HttpResponse() 
+0

Hallo ist es eine Möglichkeit, verschachtelte Bilder zu tun, dh {Modell: {Bild: file}} – Babbz77

+0

Ich erhalte ein ' "Detail": "Nicht unterstützter Medientyp \" application/json \ "in Anfrage."' Mit a 415 HTTP-Statuscode. Irgendeine Idee? – MarAja

+0

Testen Sie es auf Postboten? –

1

Die akzeptierte Antwort funktioniert

, wenn Sie die JSON als Schlüssel/Wert-Paar in dem form-data Panel (siehe Bild hierunter)

enter image description here

gesetzt Trotzdem frage ich mich, ob es eine sehr saubere Art ist, eine API zu entwickeln. Wenn Sie sowohl Bild als auch JSON in einem einzigen Aufruf hochladen müssen, ist es vielleicht in Ordnung, aber wenn Sie die Routen trennen könnten (eine für das Hochladen von Bildern, die andere für JSON-Body mit einem richtigen Content-Type-Header), scheint es besser .