0

Ich konnte keine Bilder mit Django Rest-Framework über POSTMAN hochladen, aber ich kann das gleiche mit Django Admin. Wenn ich versuche, den Code zu debuggen, wird festgestellt, dass serializer.is_valid() immer falsch ist.Ich konnte keine Bilder hochladen mit Django Rest-Framework

sind meine Codeteile sind,

views.py

class imageuploadView(APIView): 
    def post(self, request,format=None): 
     serializer=ImageSerializer(data=request.data) 
     print serializer 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(data={"detail":"Image Uploaded !"})#data 
     else: 
      return Response(data={"detail":"Not Uploaded"}) 

models.py

class ImageUploadModel(models.Model): 
    usr_id=models.IntegerField() 
    upImg=models.ImageField(upload_to='media/') 
    caption=models.CharField(max_length=50,default=None) 

serializer.py

settings.py

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
    '/static/', 
) 

MEDIA_ROOT = os.path.join(BASE_DIR,'media') 

MEDIA_URL = '/media/' 
REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
    ), 
} 

Hier ist meine Source Code

Antwort

0

Sie zusätzliches Feld in Ihrem Serializer löschen können, models.ImageFieldserializer.ImageField standardmäßig verwendet wird.

class ImageSerializer(serializers.ModelSerializer): 

    class Meta: 
     model=ImageUploadModel 
     fields=('usr_id','upImg','caption') 

Es sollte einfach funktionieren, ist Ihre Ansicht Code korrekt
Sie auch generics.CreateAPIView einen Code zu reduzieren nutzen könnten.

class imageuploadView(generics.CreateAPIView): 

    queryset = ImageUploadModel.objects.all() 
    serializer_class = ImageSerializer 

Wenn es nicht funktioniert, aktualisieren Sie bitte Ihre Antwort mit einem serializer.errors, können Sie es in else Fall überprüfen

+0

versucht, aber verbleibendes Problem :(es –

+0

ich aktualisiert Frage mit meinem Source Code, kann dieser nützlich für Sie –

+0

@JerinPeterGeorge haben Sie versucht, Bild über browable API, die von DRF zur Verfügung gestellt, versuchen Sie es und sagen, wie es mit Bildern funktioniert. Und fügen 'serializer.errors' Nachricht anstelle Ihrer Quellen. Ihr Code sieht richtig aus –

Verwandte Themen