[英]Upload picture to Django from Python script
我正在尝试从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=('example@example.com', 'example'),
verify=False, files=files, headers=headers)
但我不知道如何修改我的更新方法来更新图像。 我尝试了几种方法:将其作为json发送(更改'content-type'并在requests.put的'data'参数中发送信息),将其作为InMemoryUploadedFile发送,以及我发现googleing的其他一些解决方案周围。
我从来没有想过从Python上传一个简单的图像会那么难! 我可以在html表单中轻松地做同样的事情,但我需要从python脚本中添加它。
尝试这个:
with open('test.jpg', 'rb') as payload:
files = {
'photo': payload,
'Content-Type': 'image/jpeg'
}
r = requests.put(
'http://localhost:8000/sendfiles/1/',
verify=False, files=files
)
print(r)
请求将看到“files”参数具有内容并将相应地设置标头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.