将Djangostorages后端从s3更改为cloudfiles并处理旧文件

2024-04-28 03:40:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django应用程序要搬到rackspace。我有一个使用FileFields的模型,我使用的是django storages库s3/boto后端。我想使用cloudfiles进行存储,并且需要能够提供旧的s3内容。在

在提供文件链接的模板页面上,我执行以下操作:

^{1}$

static_url是从视图中设置的,等于settings.STATIC_URL。显然这行不通,因为当我从s3切换时,settings.STATIC_URL将发生变化。在

我是否需要编写一个脚本来手动将所有s3文件迁移到cloudfiles,并检查和更新表中的所有filefield吗?(呃)。我宁愿改变存储后端,把旧的材料留在s3桶里。在

如果我确实需要迁移文件和字段,有人已经为此编写了脚本吗?在

额外的问题:我在做这件事时没有遵循哪些最佳实践?我只使用django大约半年了。在


Tags: 文件django模型脚本应用程序url内容settings
1条回答
网友
1楼 · 发布于 2024-04-28 03:40:30

选项A:您可以在旧的和新的存储上使用不同的路径,并且可以根据需要决定文件的服务位置。我想有些东西可以是自定义存储类,我认为:您创建的存储类继承自cloudfilestorage,在重写的url方法中,它要么调用super(如果文件在新存储中)或者从S3BotoStorage调用url方法(如果文件在旧存储中)。在

选项B:您可以将文件移动到cloudfiles。如果你保持路径相似的话,我不认为你真的需要在数据库中改变任何东西。也许你甚至不需要脚本,只需要下载文件然后上传(s3cmd可以用来下载,cloudfiles可能也有一些上传工具)。在

关于最佳实践:您应该使用媒体的url和默认的文件存储,而不是静态的url和静态的存储。最好将项目的静态文件(css/js/icons)和上传的媒体分开。在

相关问题 更多 >