【问题标题】:Django - Save Cloudinary Object via Upload WidgetDjango - 通过上传小部件保存 Cloudinary 对象
【发布时间】:2018-03-25 23:37:12
【问题描述】:

我正在尝试设置 Cloudinary 的上传小部件并将生成的 Cloudinary 对象保存到我的模型上的 CloudinaryField()。 Cloudinary 的sample project 只展示了如何使用{{form}} 上传图片。

当我使用小部件上传时,我得到了一本字典,但我在文档中找不到任何可以保存它的地方。

【问题讨论】:

  • “字典”是指生成的隐藏输入字段的值的标识符字符串,还是 POST 请求返回的 JSON 响应?
  • 这是 POST 请求返回给 Cloudinary 的一组值。我想它是 JSON,但我将它直接发送到后端,Python 似乎将它识别为字典。也许我跳过了一步?

标签: django cloudinary


【解决方案1】:

上传小部件可以选择包含通知 URL,并且可以在您的上传预设设置中进行配置。此通知 URL 将向您的服务器端点返回一个响应,该响应可用于保存图像模型。

要从上传响应生成必要的 CloudinaryField,可以使用 CloudinaryResource 对象。

from cloudinary import CloudinaryResource

. . .

json_response = { "public_id": "test", "type": "upload", . . . }

# Populate a CloudinaryResource object using the upload response
result = CloudinaryResource(public_id=json_response['public_id'], type=json_response['type'], resource_type=json_response['resource_type'], version=json_response['version'], format=json_response['format'])

str_result = result.get_prep_value()  # returns a CloudinaryField string e.g. "image/upload/v123456789/test.png" 

# Save the result
p = Photo(title="title",image=str_result)
p.save()  # save result in database

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 2018-08-27
    • 2017-03-26
    • 2017-01-27
    • 2020-04-11
    • 1970-01-01
    • 2012-08-22
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多