【问题标题】:Getting file uploads to work with Django & Cloudinary让文件上传与 Django 和 Cloudinary 一起工作
【发布时间】:2014-09-15 07:53:43
【问题描述】:

我正在尝试将 Cloudinary 用作 CDN,但无法正常上传文件。我关注了他们的博客文章和网站,但遇到了一个一致且非常烦人的错误。

我有一个模型与图像(封面照片)和媒体对象(PDF 或电子书,如 .mobi 或 .epub)相关联。我设置了一个模型表单来创建一个对象:

class NewMediaObjectForm(forms.ModelForm):

    class Meta:
        model = MediaObject
        fields = ('cover_photo', ...)
        cover_photo = CloudinaryJsFileField(options={'tags': 'cover_photo'})

现在,我已经阅读了this tutorial from Cloudinary,并且我知道他们的表单如下所示:

class NewMediaObjectForm(forms.ModelForm):

    class Meta:
        model = MediaObject
        fields = ('cover_photo', ...)
    cover_photo = CloudinaryJsFileField(options={'tags': 'cover_photo'})

这是我的问题:如果我匹配他们的缩进级别,生成的 HTML 显示输入字段正在获取所有正确的 Cloudinary 内容,但上传本身不起作用。该页面会简单地刷新并显示一条错误消息,指出未选择任何图像。重要的是,我可以从生成的 HTML 中看到我指定的标签正在通过。

如果我使用方法#1,我的缩进,文件上传到 Cloudinary,但我的标签都没有应用。它还将所有内容都视为图像,在尝试上传除图像以外的任何内容(例如我之前提到的电子书文件)时,给我一个“无效的图像文件”错误。

我想要两者 - 我怎样才能让这个上传字段工作并让它尊重我试图定义的选项?

(我确实在适当的视图中调用了 cloudinary.config;我在适当的模板中确实有 cloudinary_includes 和 cloudinary_js_config;我已经导入了所有内容,并且正在视图中的表单上调用 cl_init_js_callbacks。)

还有一个补充——我使用 manage.py 的 runserver 在本地机器上运行它,而不是部署,如果这对配置有任何影响的话。

更新: 我发现我做错了什么。我已经修复它并使事情变得更糟。

没有加载必要的 jQuery。现在我 am 正在加载它,但上传按钮根本不起作用。我按下按钮,选择文件,选择对话框消失,显示没有选择文件。但是,我可以看到标签被传递给生成的 HTML,所以这是朝着正确方向迈出的一步。有什么想法吗?

【问题讨论】:

  • 请注意,第一种方法实际上与不声明字段相同 - Django 将自动生成它在 表单本身中不存在的字段。 Meta 类中的字段被完全忽略。您声明的字段与中断上传的自动生成字段之间存在差异。
  • cover_photo 字段在模型上声明为 CloudinaryField('cover_photo') - 我也尝试将其作为普通的 CloudinaryField 并得到相同的结果。

标签: django cloudinary


【解决方案1】:

请原谅我。这是一个 PEBCAK 问题;我会让其他可能在未来犯同样错误的人看到这一点。

  1. 确保正在加载正确的 jQuery 脚本 - 打开 Chrome 开发者控制台、Firebug 等并仔细检查。然后,确保它们在 DOM 之后加载,以便脚本可以附加到元素。

  2. Cloudinary 预计 html/cloudinary_cors.html 可在您的静态目录中访问。

  3. 要么我破坏了某些东西,要么这种特定类型的 ModelField 的默认行为是简单地立即上传所选文件并继续显示“未选择文件”。当我看到成功上传了 50 多张图片时,我以为什么都没有发生,并感到非常惊讶。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 2017-09-19
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2017-05-08
    相关资源
    最近更新 更多