python - 使用 REST API 上传图片

标签 python django amazon-s3 django-rest-framework

我正在使用 Django Rest Framework 开发应用程序。

模型.py

class Image(models.Model):
    image_meta = models.ForeignKey('Image_Meta',on_delete=models.CASCADE,)
    image_path = models.URLField(max_length=200)
    order = models.IntegerField()
    version = models.CharField(max_length=10)

序列化器.py

class ImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Image
        field = ('id', 'image_path' , 'order' , 'version')

views.py

class ImageList(generics.ListCreateAPIView):
    queryset = Image.objects.all()
    serializer_class = ImageSerializer

class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Image.objects.all()
    serializer_class = ImageSerializer

网址格式

url(r'^image/$',views.ImageList.as_view(),name='image_list'),
url(r'^image/(?P<pk>[0-9]+)/$',views.ImageDetail.as_view(),name='image_detail')

这只是整个系统的一部分。 我想使用 RESTAPI 上传图片,然后将其上传到 amazon s3,然后从那里获取 url 并将其存储在模型图片的 image_path 字段中。 我已经看到以前使用 REST ( like this ) 上传文件的解决方案,但对我的情况没有任何效果。有人可以建议我该怎么做吗?

最佳答案

我们知道图像/文件是使用 multipart/form-data 上传的.默认情况下 DRF 不解析多部分数据。

要使 drf 解析多部分数据,您必须告诉 DRP View 使用 MultiPartParser解析器。

from rest_framework.parsers import MultiPartParser
class ImageList(generics.ListCreateAPIView):
    ...
    ...     
    parser_classes = (MultiPartParser)
    ...

我建议使用 imagefield在您的图像字段序列化程序中,并在那里处理它以上传到亚马逊并填充 URLField

关于python - 使用 REST API 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35696719/

相关文章:

python - pip:找不到命令

Django 表单集 : Save multiple forms from formset

amazon-web-services - 使用 CDK 重定向 S3 存储桶部署的请求被拒绝访问

amazon-web-services - 自动检索 S3 公共(public)存储桶中的对象 URL 链接

python - 在 Tkinter 中打开新窗口时出现错误消息

python - scikit-learn 中每个数据拆分的交叉验证指标

python - 使用 PySide 在 QGraphicsScene 中选择项目?

python - Django:动态内联表单,根据用户选择进行过滤

django - 使用数据库后端时是否需要使用 celery.result.forget?

amazon-web-services - Amazon S3 验证预签名 URL