4

我将 s3boto、django-pipeline 和 django-storages 与此设置一起使用:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'utils.classutils.S3PipelineStorage'

MEDIA_ROOT = "/"
MEDIA_URL = '//s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME
STATIC_ROOT = '/static/'
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME
STATICFILES_DIRS = (
    os.path.join(SITE_ROOT, 'assets'),
)

以及 django-pipeline 的自定义存储

from django.contrib.staticfiles.storage import CachedFilesMixin
from pipeline.storage import PipelineMixin
from storages.backends.s3boto import S3BotoStorage

class S3PipelineStorage(PipelineMixin, CachedFilesMixin, S3BotoStorage):
    pass

但我不断得到:

ValueError: The file 'project/head.png' could not be found with <utils.classutils.S3PipelineStorage object at 0x2163510>.

但是这个文件在任何地方都不存在!不在插件中,我尝试找到它,我检查了我的静态目录,尝试在管理员中找到它,我什至不记得使用过这样的文件!我试过findstatic,找不到文件。

我会错过什么?

4

2 回答 2

3

您当然有一个指向不存在'project/head.png'文件的 css 文件,删除此引用,它应该可以工作。

于 2012-08-04T15:06:01.497 回答
1

短提示。我在设置 S3 以提供静态文件时遇到了这个问题。

我想从 s3 提供静态内容,并继续处理上传到本地机器上的媒体文件夹的文件。我当时拥有的是在 s3 上的 css 文件中引用的一个图像,该图像指向媒体文件夹中的图像,如下所示background: url(../media/some/image.png)

显然,在 css 中设置的相对路径在 s3 中找不到该文件,并且上传崩溃了。它在本地工作,但在从 s3 运行静态文件时不起作用。

于 2014-09-26T09:24:08.877 回答