在django rest框架中,我可以使用danialfarid/ng-file-upload上传单个文件
views.py:
class PhotoViewSet(viewsets.ModelViewSet):
serializer_class = PhotoSerializer
parser_classes = (MultiPartParser, FormParser,)
queryset=Photo.objects.all()
def perform_create(self, serializer):
serializer.save(blogs=Blogs.objects.latest('created_at'),
image=self.request.data.get('image'))
serializers.py:
class PhotoSerializer(serializers.ModelSerializer):
class Meta:
model = Photo
models.py:
class Photo(models.Model):
blogs = models.ForeignKey(Blogs, related_name='blogs_img')
image = models.ImageField(upload_to=content_file_name)
当我尝试上传多个文件时。我进去
Chrome开发者工具:请求有效载荷
------WebKitFormBoundaryjOsYUxPLKB1N69Zn
Content-Disposition: form-data; name="image[0]"; filename="datacable.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryjOsYUxPLKB1N69Zn
Content-Disposition: form-data; name="image[1]"; filename="datacable2.jpg"
Content-Type: image/jpeg
回应:
{"image":["No file was submitted."]}
我不知道如何写序列化上传多个文件。
8条答案
按热度按时间tnkciper1#
我设法解决这个问题,我希望它能帮助社区
serializers.py:
views.py:
lf5gs5x22#
我不太清楚,但这是工作...这是我的观点。
ccrfmcuu3#
以下是如何在博客API上上传多个文件:
models.py
serializers.py
views.py
ruoxqz4g4#
我已经用这个解决方案解决了这个问题
models.py:
serializers.py
views.py
wdebmtf25#
我花了一段时间才找到一个有效的解决方案,我想与你分享什么最终为我工作。我使用
reactjs
和DRF
。以下是我的模型:
视图为标准
viewsets.ModelViewSet
在
ArticleSerializer
中,我添加了:前端结构:
并发布:
r7knjye26#
这个问题的最佳答案对我不起作用,但查尔斯的建议非常有效。在我的例子中,我需要上传多个文件并将它们分配给特定的批处理。每个批次都分配给一个特定的用户。
下面是使用ReactJS来发出POST请求的更多上下文,沿着使用的序列化器和Postman窗口:
API.py**
serializers.py
models.py
FileUpload.js
** Postman **
Image of POST request in Postman for Multiple File Upload to DRF
2ekbmq327#
使用“图像字典(数组)”
今天我尝试了Arindam的解决方案。它工作得很好,但是过了一段时间,我发现我的前端(端口3000)向自己发出了一个GET请求,寻找一个不在那里的图像,而不是在后端(端口8000)。(例如,GET http://localhost:3000/media/images/products/default.png-返回404:Not found).对我有效的是稍微修改一下代码,这是我的解决方案。
models.py
serializers.py
views.py
编辑:在settings.py
我张贴在这里,以帮助有人(或我再次在未来)与多个文件上传或多个图像上传,因为我花了2天的时间在网上查找教程和答案,以帮助我解决这个问题。我可能并没有做得很完美,因为我最近才开始探索Django REST框架(和Python),但我希望它能有所帮助。
8gsdolmq8#
我想建议另一种基于list_serializer_class的方法。使用perform_create添加主键。也许有人会发现这个方法很有用。
models.py
serializers.py
views.py
url.py