无法将Django Admin上传的图片存储至DigitalOcean Spaces
问题原因与解决方案
你目前只配置了静态文件的存储规则,但Django中用户上传的媒体文件(比如Admin后台上传的图片)是由独立的配置项控制的,所以需要补充媒体文件的存储配置。
需要补充的核心配置
在现有配置中添加以下代码,指定媒体文件的存储后端和访问路径:
# 媒体文件存储配置 DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' MEDIA_URL = f"{AWS_S3_ENDPOINT_URL}/media/"
进阶优化(可选)
如果想把静态文件和媒体文件分开存到Spaces的不同目录下,让文件结构更清晰,可以自定义存储类:
from storages.backends.s3boto3 import S3Boto3Storage # 自定义静态文件存储类 class StaticStorage(S3Boto3Storage): location = 'static' # 自定义媒体文件存储类 class MediaStorage(S3Boto3Storage): location = 'media'
然后修改对应的全局配置项(注意替换你的项目名为实际项目名称):
STATICFILES_STORAGE = '你的项目名.settings.StaticStorage' DEFAULT_FILE_STORAGE = '你的项目名.settings.MediaStorage' STATIC_URL = f"{AWS_S3_ENDPOINT_URL}/static/" MEDIA_URL = f"{AWS_S3_ENDPOINT_URL}/media/"
完成配置后,Admin上传的图片会自动存储到DigitalOcean Spaces的media目录,访问路径也会直接指向Spaces的对应地址。
内容的提问来源于stack exchange,提问作者Lutaaya Huzaifah Idris
相关产品推荐
相关产品推荐

