前提・実現したいこと
結論:AWSのS3にデプロイしたmediaファイルとstaticファイルをdjangoで読み込ませ、サイトに画像の表示、css制御させたいです。
現在Djangoを使ってwebサイトを開発しております。
プロジェクト直下にあるmediaファイルとstaticファイルをAWSのs3にデプロイしました。
すると今までは問題なく読み込んでいた上記2つのファイルを読み込まなくなってしまい、
cssが効かなくなり、画像が表示されなくなってしまいました。
発生している問題
mediaファイルとstaticファイルをAWSのS3にデプロイした事で
画像が読み込めなくなり、css制御できなくなりました。
該当のソースコード
django
1#プロジェクト/setting.py 2 3DEBUG = False 4 5ALLOWED_HOSTS = ['*'] 6 7 8# Application definition 9 10INSTALLED_APPS = [ 11 #省略 12 'storages', #aws s3 13] 14 15 16STATIC_URL = '/static/' 17STATICFILES_DIRS = ( 18 [ 19 os.path.join(BASE_DIR, "static"), 20 ] 21) 22 23 24LOGIN_URL = 'register:login' 25LOGIN_REDIRECT_URL = 'register:top' 26LOGOUT_REDIRECT_URL = 'register:top' 27 28EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 29 30MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 31MEDIA_URL = '/media/' 32 33 34#aws-s3設定郡 35AWS_ACCESS_KEY_ID = 'hogehoge' 36AWS_SECRET_ACCESS_KEY = 'hogehoge' 37AWS_STORAGE_BUCKET_NAME = 'hogehoge' 38AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME 39AWS_S3_OBJECT_PARAMETERS = { 40 'CacheControl': 'max-age=86400', 41} 42AWS_LOCATION = 'static' 43AWS_DEFAULT_ACL = None 44STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION) 45STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 46 47 48MEDIA_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN 49MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 50 51DEFAULT_FILE_STORAGE = 'mysite.storage_backends.MediaStorage' 52DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 53STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 54
django
1#プロジェクト/storage_backends.py 2 3from storages.backends.s3boto3 import S3Boto3Storage 4 5# 画像は同ファイル名での上書きを許さない 6class MediaStorage(S3Boto3Storage): 7 location = 'media' 8 file_overwrite = False 9
html
1 2<div class="text-center"> 3<img class="detail_top_image mt-3" src="{{ user.top_image.url }}">#ここで画像を表示させていました。 4<div class="detail_name"><h4>{{ user.nick_name }}</h4></div> 5<div class="detail_name"><h6>{{ user.last_name }} {{ user.first_name }}</h6></div> 6</div>
試したこと
setting.pyに
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
の追加やバケットの見直し
その他、サイトを観てファイルの書き換えなど
補足情報(FW/ツールのバージョンなど)
djangoのバージョンは2.2です。
サイト上から画像をアップロードする事は可能です。
下記の質問を元にstaticに関する問題は解決されました。
https://teratail.com/questions/287384
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。