感谢您花时间阅读本文。我的问题很简单。
我能够设置collectstatic函数来将静态数据上传到AWS S3,但搞砸了一点。我一直在进行一些更改,现在我的网站没有使用正确的 url 来加载 css 文件。因此,我的初始代码将静态数据移至 S3 存储桶的“static”文件夹,并在以下网址引用它:
https://{project}.s3.amazonaws.com/static/css/bootstrap.min.css
现在,经过一些更改后,我使其引用相同的地址,但没有“静态”文件夹:
https://{project}.amazonaws.com/css/bootstrap.min.css
collectstatic 函数也会发生同样的情况。它不是将所有静态加载到“static”文件夹,而是将所有内容加载到存储桶的根目录。
这是我的设置文件:
settings.py
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static/'), ]
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_URL = "https://%s/static/" % (AWS_S3_CUSTOM_DOMAIN)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
MEDIA_URL = 'https://%s/media/' % (AWS_S3_CUSTOM_DOMAIN)
感谢您提前提供的所有帮助!我非常感谢社区和支持。
最好, 拉苏尔·基里耶夫
最佳答案
# constants
STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = 'custom_storages.StaticStorage'
覆盖 s3boto3storage 类变量位置。
# custom_storages.py
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage
class StaticStorage(S3Boto3Storage):
location = settings.STATICFILES_LOCATION
您可以关注此article以供进一步引用。
关于python - 将静态(对于 Django 项目)上传并使用到 AWS S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56928418/