Django Rest Framework imageField 到服务器
Posted
技术标签:
【中文标题】Django Rest Framework imageField 到服务器【英文标题】:Django Rest Framework imageField to server 【发布时间】:2015-08-26 06:09:20 【问题描述】:目前我正在尝试使用 imageField 将图像从我的模型传递到端点,但我不知道如何去做。
这是我的模型:
class searchResultsItem(models.Model):
"""
Model to store search results item for a tableView cell
"""
title = models.CharField(max_length = 100)
price = models.CharField(max_length = 4)
pop = models.IntegerField(default = 0)
distance = models.CharField(max_length = 10)
image = models.ImageField(upload_to="/media",default="/media")
这是我的看法:
class searchResultsItemViewSet(viewsets.ModelViewSet):
"""
API or Endpoint that can be viewed or edited
"""
queryset = searchResultsItem.objects.all()
serializer_class = searchResultsItemsSerializer
这是我的序列化器:
class searchResultsItemsSerializer(serializers.ModelSerializer):
"""
Serializer to parse searchResultsCell data
"""
image = serializers.ImageField(
max_length = None, use_url=True
)
class Meta:
model = searchResultsItem
fields = ('title','price','pop','distance','image')
这是我的网址:
from panView.searchTableData import views
router = routers.DefaultRouter()
router.register(r'searchResultsItem',views.searchResultsItemViewSet)
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
但是,当我查看我的端点时,我收到了图片 url 的 404 错误。这些图像位于我的应用程序文件夹和我的项目文件夹上方的媒体目录中。文本对象仅适用于图像。
如果有人知道如何使用 imageField 将图像从 Django rest 框架传递到端点,我希望得到指导。
【问题讨论】:
【参考方案1】:serializer.ImageField
这会返回图片的绝对url,我们需要的是相对url。 您可以为此进行以下操作-
class searchResultsItemsSerializer(serializers.ModelSerializer):
"""
Serializer to parse searchResultsCell data
"""
image = serializers.SerializerMethodField()
def get_image(self, instance):
# returning image url if there is an image else blank string
return instance.image.url if instance.image else ''
class Meta:
model = searchResultsItem
fields = ('title','price','pop','distance','image')
SerializerMethodField 的文档
希望这会有所帮助。
【讨论】:
谢谢!这确实给了我一个相对网址,但仍然不是正确的网址。我对 Django 比较陌生。我觉得好像我的目录结构设置不正确以上是关于Django Rest Framework imageField 到服务器的主要内容,如果未能解决你的问题,请参考以下文章
17-Django-Django REST framework-REST framework及RESTful简介
为啥 django-rest-framework 不显示 OneToOneField 数据 - django