使用S3子文件夹作为Django collectstatic目标

2024-05-17 06:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在启动一个关于AWS(ElasticBeanstalk,S3,RDS)的Django(1.11.x)项目。使用boto3和django storages应用程序,我可以将静态文件直接推送到S3中。然而,s3bucket还有一些与static无关的文件和目录。因此,我想在S3 bucket中创建一个名为static的文件夹,并将所有静态文件推送到这个指定的目录中。在

我的settings.py如下所示:

[...]
# Static files (CSS, JavaScript, Images)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

AWS_ACCESS_KEY_ID = AWS_S3_MyKEY
AWS_SECRET_ACCESS_KEY = AWS_S3_MySECRET
AWS_STORAGE_BUCKET_NAME = 'elasticbeanstalk-us-west-2-1xxxxxxxxxxx1'
AWS_S3_CUSTOM_DOMAIN = '%s.s3-us-west-2.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_QUERYSTRING_AUTH = False


# general static / media settings
STATIC_URL = '/static/'
STATIC_ROOT = 'staticfiles'

MEDIA_URL = '%smedia/' % STATIC_URL 
MEDIA_ROOT = '/static/media/'
ADMIN_MEDIA_PREFIX = '%sadmin' % STATIC_URL 

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    # ...
]
[...]

我有一些Django的经验,但这是我第一个涉及AWS和boto的项目。任何帮助都将不胜感激。提前谢谢你。在


Tags: 文件项目django目录awsurlsettingss3
1条回答
网友
1楼 · 发布于 2024-05-17 06:34:21

我在配置目录中创建一个custom_storages.py,如下所示:

from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage


class StaticStorage(S3Boto3Storage):
    location = settings.STATICFILES_LOCATION


class MediaStorage(S3Boto3Storage):
    location = settings.MEDIAFILES_LOCATION
    file_overwrite = False

然后在我的设置中:

^{pr2}$

您应该能够对DEFAULT_FILE_STORAGE执行相同的操作。祝你好运!在

网友
2楼 · 发布于 2024-05-17 06:34:21

在你的设置中

AWS_LOCATION = settings.MEDIAFILES_LOCATION

相关问题 更多 >