关于Heroku,Boto或Cloudinary的Django媒体

我正在为客户开发一个Django CMS项目,该项目通过apphook使用Aldryn Blog.我正在尝试部署到Heroku.由于Heroku的短暂文件系统,媒体必须在外部托管.目前唯一的媒体包括Django CMS Picture插件(使用标准
ImageField)和Aldryn Blog帖子(使用FilerImageField和easy_thumbnails).

我已经读过使用Boto存储到S3,这似乎就像设置一个新的DEFAULT_FILE_STORAGE(和THUMBNAIL_DEFAULT_STORAGE)一样简单.这似乎是一个很好的解决方案,但其他一切(Web服务器,搜索引擎,数据库)都是由Heroku及其插件提供的.当客户注销时,我想简单地转移Heroku所有权.

这让我考虑使用Cloudinary作为Heroku插件,但我对集成感到困惑.我不得不简单地更改DEFAULT_FILE_STORAGE,而是必须将ImageFields和FileImageFields更改为CloudinaryFields并丢失(或被迫以某种方式进行补丁)Filer和easy_thumbnail功能?

看起来我要么选择Boto而客户信用卡同时用于Heroku和S3,要么我选择Cloudinary并处理粗略集成.我错过了更好的解决方案吗?

最佳答案 您不一定错过更好的解决方案. Heroku的问题在于,如果你想上传大于几mb的任何东西 – 或者更重要的是你想通过一个可能很慢的连接来做这件事 – 你将会遇到很难的超时,因为Django首先接受你的文件作为它被发布在表单中,然后通过Heroku dyno上传到云存储提供商.

我通常会建议您使用AWS账户设置您的客户端,以便他们获得S3和CloudFront,然后使用s3direct.这不幸地涉及将ImageFields和其他可能很大的FileField更改为S3DirectFields,它将整个URL存储到文件中(在S3上)或CloudFront).然后,这会为您的模型管理员提供每个字段的支持AJAX的上传器.只要在上传所有图像后点击“提交”,它就会很好用.

我在我的播客网络网站上使用它,因为它本质上我们必须处理需要一点时间上传的文件.您可以 – 实际上必须 – 调整S3Direct,使其只接受您想要的文件类型,每个字段 – 您在settings.py文件中执行 – 但它运行良好,并为用户提供进度条.

谁与Django CMS集成,我不能告诉你,但我已经将它用于管理员的Suit皮肤,并且没有任何问题.

希望有所帮助.

点赞