【问题标题】:Configuring Django/Wagtail media to use S3配置 Django/Wagtail 媒体以使用 S3
【发布时间】:2017-04-05 15:28:01
【问题描述】:

我正在使用以下指南:

https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/

在指导您如何“配置 Django 媒体以使用 S3”的部分。我用这个来做鹡鸰。

我不清楚将“custom_storages.py”设置放在哪里。我把它放在任何地方似乎都不起作用。我现在恢复到 Whitenoise。

谢谢!

【问题讨论】:

  • 只是一些建议;我遵循相同的教程并让它工作,但是,django-storages 项目没有得到积极维护。发现了一个bug,发了PR,但是一直没有合并,也没有评论,已经好几个月了。由于我只使用 S3 并且不需要其他存储类型,因此我转而使用 django-s3-storage,这大大简化了事情并且有据可查。你可以在这里找到它:github.com/etianen/django-s3-storage
  • @FlipperPA Django-storages 得到积极维护,如果您查看提交历史记录,您几乎每天都会看到更新。
  • @dentemm 说得对,我没有检查过。但是这个 PR 是一个相当大的错误修复,已经存在了一段时间:github.com/jschneier/django-storages/pull/233 关于 Wagtail,这会导致任何用户在 Wagtail 中上传的图像/文档阻塞,因为应该使用 size 而不是 content_length

标签: python django amazon-web-services amazon-s3 wagtail


【解决方案1】:

您可以将 custom_storages.py 放在 Python 路径的任何位置。 Django 将尝试使用 STATICFILES_STORAGE 设置的值来查找类,在示例中为“custom_storages.StaticStorage”。因此 Django 实际上会“导入 custom_storages”并使用“custom_storages.StaticStorage”作为存储类。只要确保您可以“导入 custom_storages”,它应该可以工作。

【讨论】:

  • 谢谢,但你能更详细/具体一点。我边走边学。
  • 看看 Python 如何在你最喜欢的 Python 参考中找到导入的文件,希望事情会变得清晰。
  • 为了设置路径,我应该将文件重命名为不包含 .py 扩展名吗?所以它是/x/x/custom_storages。我发现这是作为指南stackoverflow.com/questions/15109548/…
【解决方案2】:

您需要设置 STATICFILES_STORAGE 设置

STATICFILES_STORAGE = 'path/to/custom_storages.StaticStorage'

如果您使用 wagtail(我假设您使用 wagtail 来标记这个问题),您可以将它放在默认的 home/ 目录中并像这样引用它:'home /custom_storages.StaticStorage'

custom_storages.py 的内容在您所遵循的指南中说明:

# custom_storages.py
from django.conf import settings
from storages.backends.s3boto import S3BotoStorage

class StaticStorage(S3BotoStorage):
    location = settings.STATICFILES_LOCATION

编辑: 我有一个 GitHub 存储库(也是一个 wagtail 项目),我在其中使用此代码,但仅用于我的媒体文件。您可以查看here

【讨论】:

  • 谢谢!这有帮助。
猜你喜欢
  • 2017-10-15
  • 1970-01-01
  • 2013-11-23
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 2019-07-01
  • 2016-02-21
相关资源
最近更新 更多