Я определил простое приложение Django, которое включает следующую модель:
class Project(models.Model):
name = models.CharField(max_length=200)
thumbnail = models.FileField(upload_to='media', null=True)
(Технически да, это мог быть ImageField.)
В шаблоне достаточно просто включить значение MEDIA_URL (правильно закодированное в settings.py) в качестве префикса к URL-адресу миниатюр. Следующее прекрасно работает:
<div id="thumbnail"><img src="{{ MEDIA_URL }}{{ current_project.thumbnail }}" alt="thumbnail" width="400" height="300" border="0" /></div>
Используя DRF, я определил потомок HyperlinkedModelSerializer, называемый ProjectSerializer:
class ProjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Project
fields = ( 'id' ,'url', 'name', 'thumbnail')
И я определил очень простого потомка ModelViewSet:
class ProjectViewSet(viewsets.ModelViewSet):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
Образец результирующего JSON выглядит следующим образом:
{
"id": 1,
"url": "http://localhost:8000/api/v1/projects/1/",
"name": "Institutional",
"thumbnail": "media/institutional_thumb_1.jpg"
}
Мне еще не удалось выяснить, как предоставить поле миниатюр, которое включает полный URL-адрес изображения в моем представлении JSON проекта.
Я бы подумал, что мне нужно создать настраиваемое поле в ProjectSerializer, но не удалось.