3
我在尝试从python脚本上传图像到Django时遇到了麻烦。我尝试了一些我发现的解决方案,但都没有成功。从Python脚本上传图片到Django
这是我的简化模型:
class ExampleModel(models.Model):
address = models.CharField(
_('address'),
max_length=200,
blank=True,
)
photo = models.ImageField(
verbose_name='photo',
upload_to=path_for_photo,
null=True,
blank=True,
validators=[FileValidator(max_size=settings.MAX_PHOTO_SIZE,
allowed_mimetypes=settings.ALLOWED_CONTENT_TYPES,
allowed_extensions=settings.ALLOWED_EXTENSIONS),]
)
现在,我的看法是这样的:
def update(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
return Response(serializer.data)
这是剧本我都在Python:
with open('test.jpg', 'rb') as payload:
headers = {'content-type': 'application/x-www-form-urlencoded'}
files = {
'file': payload,
'Content-Type': 'image/jpeg'
}
r = requests.put('http://localhost:8000/v1/myendpoint',
auth=('[email protected]', 'example'),
verify=False, files=files, headers=headers)
但我不知道如何修改我的更新方法来更新图像。我已经尝试了几种方法:将它作为json发送(改变'content-type'并发送requests.put的'data'参数中的信息),将它作为InMemoryUploadedFile发送,还有一些其他我发现googleing的解决方案周围。
我从来没有想过,从Python上传一个简单的图像会很难!我可以在html表单中轻松做到这一点,但我需要从Python脚本中进行设置。
坦克你@blazaid。我的标题是问题。最好。 – mcamacho