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