如何从Drupal移植到Django?

时间:2008-10-16 20:29:51

标签: django drupal

将现有Drupal站点移植到Django应用程序的最佳方法是什么? 我有大约500页(主要是书籍模块)和大约50篇博文。我没有使用任何第三方模块。 我想保留当前的URL(用于SEO目的)并将数据库迁移到Django。我将创建一个简单的博客应用程序,因此迁移博客文章应该没问题。使用Django为500多页提供服务的最佳方式是什么?我想使用Admin来编辑/添加新页面。

3 个答案:

答案 0 :(得分:12)

所有Django开发都是类似的,你的开发将符合这种模式。

  1. 为您的图书和博客文章定义Django模型。

  2. 使用Django的内置测试功能对该模型进行单元测试。

  3. 编写一些小工具将旧数据加载到Django中。此时,您将意识到您的Django模型并不完美。好。修理它。修复测试。重做负载。

  4. 配置模型的默认管理界面。此时,您将花时间调整管理界面。你会发现你的数据模型是错误的。这是件好事。修复你的模型。修复你的测试。修复你的负荷。

  5. 现在您的数据正确无误,您可以从旧版网页创建模板。

  6. 创建URL映射和查看函数以从数据模型填充模板。

  7. 花点时间让数据模型正确。这真的很重要,因为如果您的数据模型是可靠的,那么其他一切都非常简单。

答案 1 :(得分:3)

有可能编写与遗留数据库一起使用的Django模型(我过去已经这样做了;参见manage.py inspectdb上的文档)。

但是,我会遵循上面的建议并使用Django约定设计一个干净的数据库,然后迁移数据。我通常编写通过Django写入新数据库的迁移脚本,并使用原始Python DB API读取旧数据库(虽然也可以将Django绑定到multiple databases simultaneously)。

我还建议看看Django的可用博客应用程序。如果Pinax中包含的那个符合您的需要,请继续使用Pinax作为起点。

答案 2 :(得分:0)

S.Lott answer在多年后仍然有效,我尝试使用工具和格式完成分析以完成工作。

现在有很多Drupal导出工具,但是我选择JSON作为格式的Views Datasource具有相同的请求。该模块非常可靠,可用于最新版本的Drupal。 JSON格式在解析和编码方面都非常快,而且易于阅读且非常适合Python(import json)。

使用Views Datasource,您可以创建按节点id(nid)排序的节点视图,每页显示有限数量的元素,配置视图路径,向其添加过滤器标识符并将nid传递给它以读取所有元素直到你得到一个空的JSON响应。

在Django中导入时,您还可以从loaddata to load fixtures开始使用各种工具。视图数据源导出JSON,但它没有格式化为Django预期的夹具:您可以编写custom admin command来执行导入,您可以完全控制导入流。

您可以启动命令传递nid = 0作为参数,然后让过程读取,导入然后从下一页获取数据,只传递上一个HTTP请求中读取的最后一个nid。您甚至可以限制对视图中路径的访问,但您需要在导入端进行其他配置。

关于性能,例如我在8核/ 8 GB Linux虚拟机上通过Django 1.8自定义管理命令在不到10分钟内解析并导入了15.000多个节点,并以PostgreSQL作为DBMS,记录成功和错误信息到每个节点的自定义模型中。

这些是这两个平台之间导入/导出的基础知识,详细信息我描述了所有major steps for export from Drupal and then import to Django in this guide