首页 > 解决方案 > Django 和 S3 Bucket aws Admin 静态文件

问题描述

我有一个 django 项目,我想配置 S3 Bucket 以存储静态文件。创建后,站点会加载,但不会从存储桶中检索文件,因此即使管理页面也没有 CSS,如屏幕截图所示: 从 settings.py 激活存储桶后

这是用于存储桶配置的设置:

STATIC_URL = '/static/'

MEDIA_URL = '/images/'

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

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')




AWS_ACCESS_KEY_ID = '************'
AWS_SECRET_ACCESS_KEY = '********************'
AWS_STORAGE_BUCKET_NAME = 'BUCKET_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

我将(存储)添加到已安装的应用程序中。存储桶策略 (CORS) 设置为:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000

我也试过(py manage.py collectstatic)没有手动上传,一个管理文件夹出现在桶中,但即使使用“Collectstatic”我仍然有同样的问题(没有css,没有图像,......)

我在圈子里跑,找不到解决方案,如果有人能提供帮助,我将不胜感激。

先感谢您

标签: djangoamazon-web-servicesamazon-s3django-admin

解决方案


尝试将完整的 aws 链接添加到您的媒体和静态网址:

STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION_MEDIA)

确保添加这些字段希望它有效。

AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_REGION_NAME = 'us-east-2'
AWS_S3_ADDRESSING_STYLE = "virtual"

此外,检查浏览器中生成的 aws 的静态文件链接以查看响应内容可能会进一步帮助您。


推荐阅读