我有一个django应用程序要搬到rackspace。我有一个使用FileFields的模型,我使用的是django storages库s3/boto后端。我想使用cloudfiles进行存储,并且需要能够提供旧的s3内容。在
在提供文件链接的模板页面上,我执行以下操作:
^{1}$static_url
是从视图中设置的,等于settings.STATIC_URL
。显然这行不通,因为当我从s3切换时,settings.STATIC_URL
将发生变化。在
我是否需要编写一个脚本来手动将所有s3文件迁移到cloudfiles,并检查和更新表中的所有filefield吗?(呃)。我宁愿改变存储后端,把旧的材料留在s3桶里。在
如果我确实需要迁移文件和字段,有人已经为此编写了脚本吗?在
额外的问题:我在做这件事时没有遵循哪些最佳实践?我只使用django大约半年了。在
选项A:您可以在旧的和新的存储上使用不同的路径,并且可以根据需要决定文件的服务位置。我想有些东西可以是自定义存储类,我认为:您创建的存储类继承自cloudfilestorage,在重写的url方法中,它要么调用super(如果文件在新存储中)或者从S3BotoStorage调用url方法(如果文件在旧存储中)。在
选项B:您可以将文件移动到cloudfiles。如果你保持路径相似的话,我不认为你真的需要在数据库中改变任何东西。也许你甚至不需要脚本,只需要下载文件然后上传(s3cmd可以用来下载,cloudfiles可能也有一些上传工具)。在
关于最佳实践:您应该使用媒体的url和默认的文件存储,而不是静态的url和静态的存储。最好将项目的静态文件(css/js/icons)和上传的媒体分开。在
相关问题 更多 >
编程相关推荐