Django collectstatic上传GCS静态资源未存入static文件夹如何配置?
配置修改方法
你当前缺少静态文件上传路径前缀的指定,按以下方案修改settings.py即可:
方案一(适用于当前配置场景,静态、媒体分桶存储)
你现有配置中静态文件用static-bucket桶、媒体文件用单独的bucket-name桶,直接补充以下配置即可:
# 保留原有所有配置,新增以下内容 STATIC_URL = "https://storage.googleapis.com/static-bucket/static/" GS_LOCATION = "static"
上述配置会指定所有使用GoogleCloudStorage且走GS_BUCKET_NAME桶的文件,统一上传到桶内的static目录下,不会影响存在另一个桶的媒体文件路径。
方案二(适用于静态、媒体共用同一个桶的场景)
如果后续你需要把静态和媒体文件存在同一个桶,避免路径冲突,就用自定义存储类的方案:
- 在你的任意Django应用目录下新建
storages.py文件,写入代码:
from storages.backends.gcloud import GoogleCloudStorage class StaticGCSStorage(GoogleCloudStorage): # 指定静态文件上传路径前缀 location = "static" # 静态文件重名时直接覆盖,减少冗余文件 file_overwrite = True
- 修改
settings.py中的静态存储配置:
# 替换原有STATICFILES_STORAGE配置 STATICFILES_STORAGE = "你的应用名.storages.StaticGCSStorage"
修改完成后重新执行python manage.py collectstatic,所有静态文件就会自动上传到GCS桶的/static/目录下。
内容的提问来源于stack exchange,提问作者Piwero
相关产品推荐
相关产品推荐

