繁体   English   中英

从Python脚本上传图片到Django

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM