将 Cloudinary 图像上传链接到 Django 模型字段

Posted

技术标签:

【中文标题】将 Cloudinary 图像上传链接到 Django 模型字段【英文标题】:Linking a Cloudinary image upload to a Django model field 【发布时间】:2016-01-05 07:56:30 【问题描述】:

我已经阅读了 Cloudinary Django docs 和许多 *** 问题,但我仍在努力解决这个基本问题。我想将图像作为数据迁移的一部分上传到 Cloudinary 模型字段(CloudinaryField 类)

我的模型是这样定义的:

# model definition
from cloudinary.models import CloudinaryField
from django.contrib.gis.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=200)
    logo = CloudinaryField(blank=True, null=True)

这个模型工作正常,我可以毫无问题地通过管理员上传图片,并在我的模板中访问它。

我想编写一个数据迁移,以便可以将许多图像上传到此模型。我的非正常迁移的结构如下:

# migration file to upload logos
import cloudinary

# get all user instances
users = UserProfile.objects.all()

# loop through users, and update logo
for user in users:
    user.logo = cloudinary.uploader.upload("https://url/to/logo/logo.png")
    user.save()

我知道,如果我使用 cloudinary.uploader.upload("image.png"),我会得到这样的结果:

u'secure_url': u'https://res.cloudinary.com/mysite/image/upload/111/111.png', u'public_id': 111', u'format': u'png', u'url': u'http://res.cloudinary.com/mysite/image/upload/v1444253137/111.png', u'created_at': u'2015-10-07T21:25:37Z', u'tags': [], u'bytes': 7974, u'height': 35, u'width': 290, u'version': 1444253137, u'etag': u'aaa', u'original_filename': u'logo', u'signature': u'111', u'type': u'upload', u'resource_type': u'image'

我无法确定是否可以使用 Cloudinary 将上传的文件与模型字段相关联。所有文档(和示例代码)都没有显示如何将上传的响应与模型字段相关联。有一些使用网络表单的示例,但如果可能,我希望避免这种情况。

【问题讨论】:

真的谢谢你一百万。这个问题是对无价的upload_resource 的解释 - 一年后 - 只有这篇文章解释了。 对!令人震惊的是,他们的文档中没有解释这一点。 【参考方案1】:

尝试使用以下内容:

user.logo = cloudinary.uploader.upload_resource("https://url/to/logo/logo.png")

这应该可以解决问题。

【讨论】:

太棒了,我需要手动保存一个模型......我已经挖掘了文档和源代码 __doc__ 几个小时......这个 upload_resource 仅在这里解释。哇! upload_resource 也适用于本地文件,它们不必被托管。【参考方案2】:

我联系了 Cloudinary 支持,链接到这个问题,他们的回答如下:

您是否仔细阅读了文档?特别是 Python 模型主题在这里讨论: http://cloudinary.com/documentation/django_image_upload#django_forms_and_models

我的结论是 Cloudinary 不支持我想要的功能,这让我感到惊讶,因为它看起来很基本。

所以,我想我可以制作一个表格,用其中的数据伪造一个请求,以便我可以上传一个文件以将其与模型相关联。这看起来很疯狂,但我看不出有什么替代方案。

【讨论】:

以上是关于将 Cloudinary 图像上传链接到 Django 模型字段的主要内容,如果未能解决你的问题,请参考以下文章

将图像上传到 Cloudinary

如何将图像上传到 Cloudinary - MERN 堆栈

无法使用 Heroku 将图像上传到 Cloudinary

如何将缓冲区图像上传到 cloudinary?

Android Studio:将图像从 Android Studio 上传到 Cloudinary (https://cloudinary.com/)

使用 jquery 文件上传将图像上传到 cloudinary 和我自己的服务器