我想将我的静态文件上传到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'
答案 0 :(得分:1)
如果您使用的是django-heroku
,并且按照说明在代码中包含以下内容:
django_heroku.settings(locals())
...,那么它将覆盖您的STATIC_ROOT
设置。如果您要保留自己的STATIC_ROOT
设置,请确保在调用STATIC_ROOT
之后设置django_heroku.settings
。