#python #django #serialization #django-rest-framework
#python #django #сериализация #django-rest-framework
Вопрос:
Я столкнулся с проблемой в возвращенном URL-адресе изображения, который не является правильным.
Мой URL-адрес возвращаемого изображения
"/media/slider_image/image/slider_image_4ea48daf-477d-4f00-93cb-7ac87c6f4002.JPG",
но фактический URL-адрес, ожидаемый от сериализатора, равен
http://127.0.0.1:8000/media/slider_image/image/slider_image_4ea48daf-477d-4f00-93cb-7ac87c6f4002.JPG
Вот мой фрагмент моего кода, который я пробовал.
class ListSliderSerializer(SliderSerializers):
images = serializers.SerializerMethodField('get_images')
def get_images(self, instance):
return [slider_image.image.url for slider_image in instance.slider_image.all()]
class Meta(SliderSerializers.Meta):
fields = (
'images',
'section',
'tag',
)
что я должен вернуть в
return [slider_image.image.url for slider_image in instance.slider_image.all()]
чтобы получить полный URL-адрес для моего изображения?
Ответ №1:
Вы можете использовать метод request.build_absolute_uri(...)
—(doc) как
class ListSliderSerializer(SliderSerializers):
images = serializers.SerializerMethodField('get_images')
def get_images(self, instance):
request = self.context["request"]
return [
request.build_absolute_uri(slider_image.image.url)
for slider_image in instance.slider_image.all()
]
class Meta(SliderSerializers.Meta):
fields = (
'images',
'section',
'tag',
)
Также обратите внимание, что вы должны передать request
сериализатору в качестве контекстных данных