Несогласованные пути к файлам в django rest framework - PullRequest
0 голосов
/ 18 июня 2020

У меня следующее представление:

class UserProfileView(APIView):
    permissions_classes = [permissions.IsAuthenticated]
    def get(self, request):
        user = User.objects.get(id=request.user.id)
        serializer = UserPrivateSerializer(user)
        return Response(serializer.data)

Следующая модель:

class User(AbstractUser):
    pp = models.ImageField(blank=True)

и следующий сериализатор:

class UserPrivateSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

Следующие URL-адреса:

urlpatterns = [
    path('profile/', UserProfileView.as_view())
]

Я получаю следующий ответ:

{
    "pp": "/media/WIN_20190423_18_50_32_Pro.jpg"
}

когда я ожидаю:

{
    "pp": "localhost:8000/media/WIN_20190423_18_50_32_Pro.jpg"
}

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

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Оказывается, я просто добавил context={"request": request} в сериализатор.

0 голосов
/ 18 июня 2020

попробуйте это:

class UserProfileView(APIView):
    permissions_classes = [permissions.IsAuthenticated]
    def get(self, request):
        user = User.objects.get(id=request.user.id)
        serializer = UserPrivateSerializer(user, context=self.get_serializer_context())
        return Response(serializer.data)

ключ добавляет context=self.get_serializer_context() к вам сериализатор.

...