Django REST Framework загрузка изображений не работает - PullRequest
0 голосов
/ 11 марта 2019

У меня есть API регистрации, но я хочу иметь возможность загружать дополнительное изображение при регистрации пользователя.В настоящее время я получаю сообщение об ошибке: «TypeError: 'photo' - недопустимый аргумент ключевого слова для этой функции».Вот мой код:

# serializers.py

class RegisterSerializer(serializers.ModelSerializer):
    first_name = serializers.CharField(required=True)
    last_name = serializers.CharField(required=True)
    email = serializers.EmailField(required=True)
    photo = serializers.ImageField() # doesn't work currently

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name',
              'last_name', 'email', 'photo', 'password')
        extra_kwargs = {'password': {'write_only': True, 'min_length': 5}}

    def create(self, validated_data):
        user = super(RegisterSerializer, self).create(validated_data)
        user.set_password(validated_data['password'])
        user.save()

        return user

# api.py

class RegisterAPIView(CreateAPIView):
    serializer_class = RegisterSerializer
    permission_classes = [AllowAny]
    parser_class = (FileUploadParser,) # not sure if this is needed

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        self.perform_create(serializer)

        token = Token.objects.create(user=serializer.instance)
        token_data = {"token": token.key}

        return Response({**serializer.data, **token_data})

# urls.py

urlpatterns = [
    path('api/auth/register', RegisterAPIView.as_view()),
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

# settings.py

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