Django rest framework - сериализатор миниатюр изображений

Мой случай прост: я хочу отправить URL-адреса эскизов клиенту в ответах на запросы AJAX. У меня есть настраиваемые поля изображений, которые десериализуют изображения в кодировке base64 от клиента и sorl_thumbnail в качестве механизма эскизов. В моих представлениях я хочу создать экземпляр десериализатора с произвольными параметрами для эскиза.

Каковы общие методы для этого в среде Django REST?

upd
Основная проблема заключается в том, как передать сериализатору аргументы о размерах, формате, качестве и т. д.? В одном месте мне может понадобиться маленькая миниатюра картинки, в другом большая миниатюра.

Теперь я вижу два подхода:
- Создать фабрику, которая будет производить сериализатор с заданными параметрами для полей эскизов
- Отправлять параметры эскизов в запросах AJAX и сделать сериализатор способным их читать и следовать им.


person Gill Bates    schedule 18.09.2013    source источник


Ответы (1)


Есть много способов сделать это, в зависимости от большого количества информации, которую вы не предоставляете, но, возможно, рассмотрите возможность использования SerializerMethodField в вашем сериализаторе.

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

По умолчанию DRF GenericViews передает запрос сериализаторам через < параметр href="http://django-rest-framework.org/api-guide/serializers.html#включая-extra-context" rel="nofollow">context. Это позволяет вам получить доступ к запросу, например, request = self.context.get('request', None). Оттуда вы можете прочитать варианты миниатюр, как вы предлагаете.

Надеюсь, этого достаточно, чтобы вы начали.

person Carlton Gibson    schedule 19.09.2013