django 管理静态文件通过“collectstatic”上传到 s3,但在 运行 本地时不提供
django admin static files are uploaded to s3 via `collectstatic` but not served when running locally
我正在关注 this tutorial 在 s3 上存储静态和媒体文件。这是我在 settings.py
中的静态文件配置的样子:
USE_S3 = os.getenv('USE_S3') == 'TRUE'
## AWS Configuration
if USE_S3:
# aws settings
AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')
AWS_DEFAULT_ACL = None # differs from the tutorial because the bucket is private
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
# s3 static settings
AWS_LOCATION = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
else:
STATIC_URL = '/staticfiles/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
MEDIA_URL = '/mediafiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles'
设置所有环境变量后,我 运行 python manage.py collectstatic
可以看到文件已成功上传到我的 s3 存储桶。 IE。我在 s3 上看到 static/admin/
目录,其中包含字体 css 等
然而,当我 运行 服务器在本地时,管理面板丢失了所有 css。鉴于 collectstatic
有效,我不确定为什么 django 找不到管理静态文件。我找到了其他几个教程 here, here and here,但找不到我缺少的内容。对于他们所有人来说,它似乎应该在 运行ning collectstatic
之后“正常工作”...我忘记了什么?
注意 USE_S3 == False
时管理面板正常
所以 s3 存储桶中的对象不是 public。我制作了资产 public,现在可以使用了。
我正在关注 this tutorial 在 s3 上存储静态和媒体文件。这是我在 settings.py
中的静态文件配置的样子:
USE_S3 = os.getenv('USE_S3') == 'TRUE'
## AWS Configuration
if USE_S3:
# aws settings
AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')
AWS_DEFAULT_ACL = None # differs from the tutorial because the bucket is private
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
# s3 static settings
AWS_LOCATION = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
else:
STATIC_URL = '/staticfiles/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
MEDIA_URL = '/mediafiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles'
设置所有环境变量后,我 运行 python manage.py collectstatic
可以看到文件已成功上传到我的 s3 存储桶。 IE。我在 s3 上看到 static/admin/
目录,其中包含字体 css 等
然而,当我 运行 服务器在本地时,管理面板丢失了所有 css。鉴于 collectstatic
有效,我不确定为什么 django 找不到管理静态文件。我找到了其他几个教程 here, here and here,但找不到我缺少的内容。对于他们所有人来说,它似乎应该在 运行ning collectstatic
之后“正常工作”...我忘记了什么?
注意 USE_S3 == False
所以 s3 存储桶中的对象不是 public。我制作了资产 public,现在可以使用了。