【发布时间】:2019-07-05 08:50:32
【问题描述】:
我想将我的静态文件上传到 amazon s3 存储,但我无法阻止 django 将它们放在项目根目录的 staticfiles 目录中。我的 requirements.txt 中有 boto3 并设置了
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
我已成功将 s3 与媒体文件设置到同一个存储桶(在不同目录下)。
当我注释掉 s3 设置时,Collectstatic 似乎也忽略了 settings.py 中的 STATIC_ROOT 变量。运行 python3 manage.py collectstatic 时,我希望它将静态文件收集到 STATIC_ROOT 中,正如它在此处的文档中所说的 https://docs.djangoproject.com/en/2.1/ref/settings/ (在 static_root 下)。但即使我给 STATIC_ROOT 一个不同的值,collectstatic 总是会收集到根目录下名为 staticfiles 的目录中。
STATIC_ROOT = os.path.join(BASE_DIR, 'this_is_not_used_by_collectstatic')
我的 s3 设置的其余部分:
# Amazon S3
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_STORAGE_BUCKET_NAME = 'my_bucket_name'
AWS_S3_REGION_NAME = 'eu-north-1'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_DEFAULT_ACL = None
AWS_LOCATION = 'static'
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# media
DEFAULT_FILE_STORAGE = 'korvir.storage_backends.MediaStorage'
【问题讨论】:
-
你在使用
django_heroku吗? stackoverflow.com/questions/49889463/…