[解決済み] Django プロジェクトで django-storages と Amazon S3 を使用し、静的ファイルとメディアファイル用に異なるフォルダを設定するにはどうしたらいいですか?
2023-02-09 12:53:47
質問
私は、アプリの静的ファイルを保存するためにサーバーファイルシステムを使用していた Django プロジェクトを設定しています (
STATIC_ROOT
) とユーザがアップロードしたファイル (
MEDIA_ROOT
).
私は今、すべてのコンテンツをAmazonのS3にホスティングする必要があるので、このためにバケットを作成しました。使用方法
django-storages
と共に
boto
のストレージバックエンドで、収集した静的情報をS3バケットにアップロードすることに成功しました。
MEDIA_ROOT = '/media/'
STATIC_ROOT = '/static/'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'KEY_ID...'
AWS_SECRET_ACCESS_KEY = 'ACCESS_KEY...'
AWS_STORAGE_BUCKET_NAME = 'bucket-name'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
すると、問題が発生しました。
MEDIA_ROOT
と
STATIC_ROOT
はバケット内では使用されないため、バケットルートには静的ファイルとユーザーがアップロードしたパスの両方が含まれます。
となると、設定できるのは
S3_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL + STATIC_ROOT
MEDIA_URL = 'S3_URL + MEDIA_ROOT
でS3に保存する場合、静的ファイル/メディアファイルの区別はありません。
django-storages
.
これはどのようにしてできるのでしょうか?
ありがとうございます。
どのように解決するのですか?
似たような方法ですが、Mandxの方法よりもシンプルで、次のようにすればうまくいくと思います。
を作成します。
s3utils.py
ファイルを作成します。
from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
次に
settings.py
:
DEFAULT_FILE_STORAGE = 'myproject.s3utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'myproject.s3utils.StaticRootS3BotoStorage'
異なるが関連した例(私が実際にテストしたもの)が、2つの
example_
ファイル
ここで
.
関連
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?