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

1

短いヒント。静的ファイルを提供するために S3 をセットアップしていたときに、これに遭遇しました。

s3 から静的コンテンツを提供し、アップロードされたファイルをローカル マシンのメディア フォルダーに処理し続けたいと考えていました。私が持っていたのは、s3 の css ファイルで参照された 1 つの画像で、このようなメディア フォルダー内の画像を指していましたbackground: url(../media/some/image.png)

明らかに、css で設定された相対パスを使用してそのファイルを s3 で見つけることができず、アップロードがクラッシュしました。ローカルでは機能しますが、s3 から staticfiles を実行する場合は機能しません。

于 2014-09-26T09:24:08.877 に答える