我已经定义了一个包含以下模型的简单Django应用程序:
class Project(models.Model):
name = models.CharField(max_length=200)
thumbnail = models.FileField(upload_to='media', null=True)
Run Code Online (Sandbox Code Playgroud)
(从技术上讲,这可能是一个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>
Run Code Online (Sandbox Code Playgroud)
使用DRF,我定义了一个名为ProjectSerializer的HyperlinkedModelSerializer后代:
class ProjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Project
fields = ( 'id' ,'url', 'name', 'thumbnail')
Run Code Online (Sandbox Code Playgroud)
我已经定义了一个非常简单的ModelViewSet后代:
class ProjectViewSet(viewsets.ModelViewSet):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
Run Code Online (Sandbox Code Playgroud)
生成的JSON示例如下所示:
{
"id": 1,
"url": "http://localhost:8000/api/v1/projects/1/",
"name": "Institutional",
"thumbnail": "media/institutional_thumb_1.jpg"
}
Run Code Online (Sandbox Code Playgroud)
我还没有弄清楚如何在项目的JSON表示中提供包含图像完整URL的缩略图字段.
我认为我需要在ProjectSerializer中创建一个自定义字段,但还没有成功.