я не могу загрузить IMG в DRF API, используя Angular 6 - PullRequest
0 голосов
/ 24 сентября 2018

Я новичок в DRF, я создаю простой API, зависит от официальной документации, все работает хорошо, но когда я хочу загрузить IMG-файл, request.data пусто

request.data = ---->  <QueryDict: {}>

, так что если кто-нибудьможет помочь

угловая* views.py

class ProfileViewSet(viewsets.ModelViewSet):
    serializer_class = ProfileSerializer
    queryset = Profile.objects.all()

    @decorators.action(
       detail=True,
       methods=['PUT'],
       serializer_class=ProfilePicSerializer,
       parser_classes=(MultiPartParser,)
    )
    def pic(self, request, pk):
        print ('request.data = ----> ',request.data)
        obj = self.get_object()
        print(obj)
        serializer = self.serializer_class(obj, data=request.data,
                                       partial=True)

        if serializer.is_valid():
            serializer.save()
            return response.Response(serializer.data)
        return response.Response(serializer.errors,
                                 status.HTTP_400_BAD_REQUEST)

serializers.py

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ['name', 'bio', 'pic']
        read_only_fields = ['pic']


class ProfilePicSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ['pic']

settings.py

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ),
    'DEFAULT_PARSER_CLASSES': (
        # 'rest_framework.parsers.JSONParser',
        # 'rest_framework.parsers.FileUploadParser',
        # 'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser',

    ),

    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
    ),
}

или если есть другой способ проще, чем мне просто нужноЛюбой способ загрузить изображение, я новичок в программировании, спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Проблема в том, что метод put не поддерживает данные из нескольких частей формы в угловом формате 6. Использование метода post вместо put решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...