我已将 django REST API 设置为在调试模式下使用本地存储,在生产环境中使用 S3 存储。这适用于公共文件,因为我覆盖了DEFAULT_FILE_STORAGE这样的:
if IS_DEBUG:
DEFAULT_FILE_STORAGE = 'api.storage_backends.PublicMediaStorage'
Run Code Online (Sandbox Code Playgroud)
每个人都会FileField自动使用它。现在我想以同样的方式使用私有 S3 存储,但是因为我必须显式定义存储 ( FileField(storage=PrivateMediaStorage())),所以总是使用 S3 存储。
在调试模式下如何使用本地存储而不是 S3 存储?
PS:我已经考虑过FileField根据 DEBUG 模式将模型更改为使用或不使用显式存储。这并没有完全解决我的问题,因为我的迁移是在 DEBUG 模式下创建的,因此始终包含没有私有存储类的模型。
更新:
我正在寻找一种解决方案,它可以在两种环境中共享相同的迁移,并且仅在运行时延迟实例化实际存储类。就像 djangoDEFAULT_FILE_STORAGE已经处理了一样。
python django amazon-s3 django-storage django-rest-framework