1

最近、Amazon S3 から静的ファイルとメディア ファイルを提供するプロジェクトをセットアップしました。これにより、ローカルで作業している場合でも、プロジェクトは S3 からすべてのコンテンツを提供できるようになりました。

静的設定は、S3 で動作するように次のように設定されています。

STATIC_ROOT = "/%s/" % STATIC_S3_PATH
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME

また、Django のドキュメントと一致するように、URL conf ファイルに次の内容を追加しました。

if settings.DEBUG:
    urlpatterns += patterns('django.contrib.staticfiles.views',
        url(r'^static/(?P<path>.*)$', 'serve'),
        url(r'^media/(?P<path>.*)$', 'serve'), 
    )

「//s3.ama...」でファイルを提供しているため、明らかにこれらの URL パターンは機能しません。私は自分の知恵で、問題を回避するために正規表現を書くことができると考え、置き換えてみました:

url(r'^static/(?P<path>.*)$', 'serve'),

と:

url(r'//s3.amazonaws.com/%s/static/(?P<path>.*)$' % settings.AWS_STORAGE_BUCKET_NAME, 'serve'),

これもうまくいきませんでした。最終的に問題を回避するために、設定ファイルに条件ステートメントを追加して、静的ファイルをどこから提供するかを決定しました。

if DEBUG:
    STATIC_URL = '/static/'
else:
    STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME

人々はこのソリューションについてどう思いますか? 私はそれが前進することに本当に満足していません。私の代替手段は何ですか?

4

1 に答える 1

1

設定の条件付きは良い解決策です。

別のオプションは、ローカル設定用に別の設定ファイルを使用することです。

于 2012-11-18T13:12:04.993 に答える