Я хочу отразить изображения с трясогузкой

Текущее состояние

* Когда я загрузил файлы изображений на wagtail, хотя заголовок изображения читается хорошо, но само изображение было уничтожено. поэтому заголовки отображаются только на экране как администратора, так и пользователя. Я просмотрел несколько блогов и сайтов о медиа и статике, но эта проблема не была решена в течение многих дней. Кроме того, после использования s3, CSS на стороне администратора может отражаться или не отражаться в зависимости от браузера.

среда разработки

python==3.7.3
Django==3.2.6
gunicorn==20.1.0
psycopg2==2.9.1
wagtail==2.14
whitenoise==5.3.0 
DB == postgres
server == Heroku stack-18
aws s3

====

CSS был сохранен whitenoise до адаптации s3, но я не знаю, нужно ли добавлять два STATICFILES_STORAGE, поэтому удалил один. Я не смог использовать команду collectstatic, хотя

бессмысленный код

прокомментируйте предыдущий код

#base.py
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)

# aws settings
"""
AWS_ACCESS_KEY_ID = 'AKIAXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXX'
AWS_STORAGE_BUCKET_NAME = 'XXXXXXXXXXXXXXX'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_DEFAULT_ACL = None
"""

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_S3_CUSTOM_DOMAIN = f'XXXXXXXXXXXXX.com.s3.amazonaws.com'
AWS_URL = os.environ.get('AWS_URL')
AWS_DEFAULT_ACL = 'public-read'

# static settings
"""
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_LOCATIONS = 'static'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
"""

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = 'https://{ AWS_S3_CUSTOM_DOMAIN }/static/'
STATICFILES_LOCATIONS = 'static'
STATICFILES_STORAGE = 'squjap.settings.backends.StaticStorage'

# media settings
"""
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
"""

MEDIA_URL = 'https://{ AWS_S3_CUSTOM_DOMAIN }/media/'
MEDIAFILES_LOCATIONS = 'media'
DEFAULT_FILE_STORAGE = 'squjap.settings.backends.MediaStorage'

AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

#production.py
from __future__ import absolute_import, unicode_literals
import dj_database_url

import os
from .base import *


SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

"""
COMPRESS_OFFLINE = True
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.CSSMinFilter',]
COMPRESS_CSS_HASHING_METHOD = 'content'
"""

ALLOWED_HOSTS = ['*']
#backends.py
from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings
"""
class MediaStorage(S3Boto3Storage):
    location = 'media'
    file_overwrite = False
"""
class StaticStorage(S3Boto3Storage):
    location = settings.STATICFILES_LOCATIONS
    file_overwrite = False

class MediaStorage(S3Boto3Storage):
    location = settings.MEDIAFILES_LOCATIONS
Вернуться на верх