将 django-storages 后端从 s3 更改为 cloudfiles 并处理旧文件

2023-12-29

我有一个 django 应用程序,我正在将其转移到机架空间。我有一个使用 FileFields 的模型,并且正在使用 django-storages 库 s3/boto 后端。我想使用 cloudfiles 进行存储,并且我需要能够提供旧的 s3 内容。

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

href="{{ static_url }}{{ article.code_archive_file}}"

static_url从视图设置并且等于settings.STATIC_URL。显然这不会起作用,因为settings.STATIC_URL当我从 s3 切换时,情况将会发生变化。

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

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

额外问题:在执行此操作时我没有遵循哪些最佳实践?我现在使用 django 才半年左右。


选项 A:您可以在新旧存储上使用稍有不同的路径,并决定从何处提供文件。有些东西可能是自定义存储类,我认为:您创建从 CloudFilesStorage 继承的存储类,并且在重写的 url 方法中,它将调用 super (如果文件位于新存储中)或从 S3BotoStorage 调用 url 方法(如果文件位于旧存储中)贮存)。

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

关于最佳实践:您应该使用 media_url 和 DEFAULT_FILE_STORAGE 而不是 static_url 和静态存储。将项目的静态文件(css/js/icons)和上传的媒体分开是一个好主意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 django-storages 后端从 s3 更改为 cloudfiles 并处理旧文件 的相关文章

随机推荐

  • UITapGestureRecognizer 不执行任何操作

    我有一个应用程序 可以显示一页文本 可以点击按钮或在视图中滑动以在各个页面中前进或后退 容器视图附加了两个 UISwipeGestureRecognizer 用于向左滑动和向右滑动 这些手势没有任何问题 但现在我正在尝试将 UITapGes
  • Wildfly 中出现“意外调用状态 0”错误

    我创建了一个小例子来演示该错误 有状态 Bean 将列表作为其状态并注入无状态 Bean Stateful RequestScoped public class StatefulBean Inject StatelessBean slsb
  • 维基百科对MapReduce的reduce的解释不正确吗?

    MongoDB的解释 http www mongodb org display DOCS MapReduce MapReduce ReduceFunction减少阶段说 Map Reduce引擎可以迭代地调用Reduce函数 因此 这些函数
  • 向 docker 推送/拉取镜像时出现错误:403 Forbidden

    我在用泊坞窗服务器版本 1 10 3安装了 docker 发行版RHEL 7 2 我面临的问题是间歇性的 有时推 拉命令有效 有时会抛出以下错误 Pulling repository test a b c com hello world E
  • Rails 使用 :collection 渲染部分内容

    这很简单 不应该成为问题 但我不明白这里发生了什么 我有以下代码 class DashboardController lt ApplicationController def bookings bookings Booking all en
  • 用CSS识别浏览器和操作系统?

    我知道为特定浏览器或操作系统编写特定 CSS 代码不是正确的做法 但在我正在构建的网站中 某些元素在特定浏览器中无法很好地呈现 例如 某些元素在 IE8 中不受支持 或者在小 iPhone 显示屏中看起来很奇怪 因此我的问题是 仅使用 CS
  • 确定网络驱动器的协议

    有没有办法确定 Windows 上安装的网络驱动器所使用的协议名称 SMB CIFS NFS 和版本 在 C 中 EDIT 使用 Rusted 的答案中的信息 我从网络上的 Windows 7 计算机获得了以下信息 NETRESOURCE
  • 从 Java 调用 Oracle 函数

    我在使用 ojdbc14 jar 从 Java 1 6 调用 Oracle 函数 不是存储过程 时遇到问题 我不知道该函数包含什么 因为我从远程服务器调用它 我所知道的是 FUNCTION ap ch get acct balances V
  • iOS 6 方向方法

    iOS 6 中的方向方法发生了变化 我在纵向模式下的整个应用程序有许多视图控制器 不是选项卡栏视图控制器 我只想在旋转设备时将其中一个视图控制器旋转到横向模式 它实际上显示 webView 下面的方法适用于xcode 4 4 但是 它不在
  • 帮助以窗口形式向 DataGridView 添加复选框列

    我正在尝试在简单的窗口窗体应用程序中向 DataGridView 添加复选框列 我使用 ADO NET 从数据库中提取一些数据 放入数据表中 然后将 datagridview 数据源设置为数据表 然后我想添加一个复选框列作为第二列 到目前为
  • 为什么这个程序在布尔条件变量不存在波动的情况下不会进入无限循环?

    我想了解何时需要将变量声明为易失性 为此 我编写了一个小程序 并期望它由于缺少条件变量的波动性而进入无限循环 它没有进入无限循环 并且在没有 volatile 关键字的情况下工作正常 两个问题 我应该在下面的代码清单中更改什么 以便它绝对需
  • Android BLE,读写特性

    我目前正在开发 Android BLE 并遇到了很多 Android BLE 堆栈的问题 我的开发工具是带有 Android 4 3 的 Samsung Galaxy J 我想知道如何从 BLE 读取特征并写入特征 就像我验证收到的数据 然
  • Razor 类库 (RCL) 中包含静态内容的 404

    我在 razor 类库 net Core 3 1 中实现 ASP NET Core v3 1 应用程序使用的静态文件时遇到困难 当尝试访问静态文件时 我只收到 404 未找到 我在 Stackoverflow 上遵循了以下答案 https
  • 后台服务导致崩溃

    我的问题可能是对服务及其使用的公然误解 或者与其他应用程序的冲突 当我开始一个特定的活动时 我启动两个后台服务 位置跟踪以给出行驶距离 以及经过的计时器 这两个服务都通过BroadcastReceiver 我用一个启动每项服务Long通过I
  • 使用 ggplot2facetwrap R 的控制图

    我有以下图表 这是使用 dplyr 创建的group by and summarise函数与ggplot2 slopes gt head 12 gt inner join word month counts by word gt mutat
  • 如何让我的 Discord 机器人删除频道中的所有消息?

    当用户要求机器人这样做时 我试图让我的机器人立即删除所有消息 但我的代码不起作用 import os import discord client discord Client client commands Bot command pref
  • 枚举 Windows 中所有可用的驱动器号

    我想使用 VC 枚举 Windows 中所有可用的驱动器号 尚未占用 我怎样才能做到这一点 获取逻辑驱动器 https msdn microsoft com en us library aa364972 v vs 85 aspx以掩码中的位
  • Assimp模型加载库安装/链接问题

    我正在尝试安装 Assimp 以在我的项目中使用 但遇到了一些麻烦 我目前使用的是 win 10 pro 和 Visual Studio 15 2017 我已经下载了Assimp 4 0 1 zip 将其解压到一个目录中 加载cmakeGu
  • jQuery 1.4.4:如何根据数据属性值查找元素?

    我想这应该是一个非常简单的任务 但使用 Firefox for Mac 3 6 12 以下内容不起作用 assign data attributes gallery li each function i this data slide i
  • 将 django-storages 后端从 s3 更改为 cloudfiles 并处理旧文件

    我有一个 django 应用程序 我正在将其转移到机架空间 我有一个使用 FileFields 的模型 并且正在使用 django storages 库 s3 boto 后端 我想使用 cloudfiles 进行存储 并且我需要能够提供旧的