是否有适用于 Amazon S3 的 Python3 兼容 Django 存储后端?

Posted

技术标签:

【中文标题】是否有适用于 Amazon S3 的 Python3 兼容 Django 存储后端?【英文标题】:Is there a Python3 compatible Django storage backend for Amazon S3? 【发布时间】:2013-04-04 03:40:32 【问题描述】:

我正在用 Python 3.3.1 构建一个 Django 应用程序,以部署在 Heroku 上。由于其临时文件系统,Heroku 无法从本地文件系统提供应用程序的静态文件,因此它们需要位于其他地方,而我想将它们放在 Amazon S3 的位置。

我找到了许多有用的教程(Deploying Django on Heroku 等),所有这些教程都使用 django-storages 应用程序和 boto 来收集静态文件并将它们存储在 S3 上。不幸的是,将 boto 移植到 Python3 的工作仍未完成。 django-storages 可以使用其他 S3 存储提供程序(Apache Libcloud 或简单的 Amazon S3 Python 库),但 django-storages 本身也不能在 Python3 上运行。

我还看到了将 collectstatic 调用添加到 Heroku 应用程序的 Procfile 的黑客行为,它确实将文件放置在 Django 应用程序可以使用的位置,但它会减慢部署速度;每次部署应用程序时都必须收集和上传文件。无论如何,Heroku dynos 不太适合提供静态文件,我最终也想存储用户数据,这将需要像 S3 这样的非 Heroku 数据存储。

除了 django-storages 中提供的存储后端之外,还有与 Python3 兼容的 Django 存储后端吗?还是我暂时坚持使用 Python 2.7?

【问题讨论】:

【参考方案1】:

django-storages-p3 看起来很有希望。试试看,让我知道:D。

【讨论】:

我设法使用这个版本从 Django 上传了一个文件,所以到目前为止它似乎可以工作。必须安装它via the repo directly, though 和install a Py3-compatible boto。【参考方案2】:

django-storages-redux (now just django-storages) 与 boto 一起为我工作得非常好,s3 功能现在支持 Python 3。

【讨论】:

以上是关于是否有适用于 Amazon S3 的 Python3 兼容 Django 存储后端?的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Amazon S3 的基于开源或付费 JavaScript 的文件管理器 [关闭]

Amazon S3 CORS 适用于 HTTP,但不适用于 HTTPS

如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前缀

Amazon S3 存储桶策略引用

适用于 Python 或 Ruby 的 Amazon Book API? [复制]

适用于 iOS 消费的 Web 服务(在 Amazon 上)安全性