Django 切换CMS的工具和提示

Django 切换CMS的工具和提示,django,drupal,content-management-system,joomla,Django,Drupal,Content Management System,Joomla,我在一所大学工作,在过去的一年里,我们终于摆脱了几千页的静态HTML网站,转到了Drupal网站。这显然需要大量的数据输入 如果您已经在使用CMS,并且正在切换到另一个更适合您需要的CMS,该怎么办?在如此巨大的变化中,您如何将堆积如山的数据输入最小化?是否有为此而构建的工具,或者应该遵循一些最佳实践?Drupal模块将提供很大的帮助。将为您提供该过程的概述 Drupalcon DC 2009上的演示文稿中的内容可能有些过时,但也提供了一个很好的介绍。迁移+表向导(以及模式+视图)是一个不错的选

我在一所大学工作,在过去的一年里,我们终于摆脱了几千页的静态HTML网站,转到了Drupal网站。这显然需要大量的数据输入

如果您已经在使用CMS,并且正在切换到另一个更适合您需要的CMS,该怎么办?在如此巨大的变化中,您如何将堆积如山的数据输入最小化?是否有为此而构建的工具,或者应该遵循一些最佳实践?

Drupal模块将提供很大的帮助。将为您提供该过程的概述

Drupalcon DC 2009上的演示文稿中的内容可能有些过时,但也提供了一个很好的介绍。

迁移+表向导(以及模式+视图)是一个不错的选择。使用表向导,您可以使用migrate将任何表公开给drupal并相应地映射字段

请查看以下详细信息:

  • 您需要从django访问现有数据。这对我迁移有很大帮助:。有了正确的模型定义,您将拥有完整的django功能,包括管理功能。事实上,我正在使用django作为几个遗留php项目的管理后端—django的管理可以轻松地超过许多定制的手工编写的管理脚本

  • 授权应保持不变。用户应该能够使用其凭据登录,但很难为身份验证数据编写迁移脚本,因为密码哈希模式可能不同,并且在不知道普通密码的情况下无法在它们之间转换。Django提供了一种支持不同身份验证源的方法,因此您可以编写Drupal身份验证后端:

  • 没有必要完全重写。如果某些部件工作正常,它们仍然可以由Drupal提供动力。可以使用具有相同UI的Django编写新代码。新旧部件之间的路由可以通过web服务器url重写来执行。django和drupal部件都可以由相同的DB供电

    • 无论发生什么情况,都需要手动对数据进行预处理和后处理。尽早接受您的数据可能处于比您想象的更糟糕的状态:字段将被误用;记录到记录的引用(外键)可能没有正确实现,或者根本没有实现;内容可能需要删除,有时甚至是不好或不正确的

    • 检查您的数据库编码。较旧的数据库将不会采用Unicode编码,如果您必须导出数据转储并将其导入其他地方,则会变得不耐烦。即使这样,假设你的数据中会有一些古怪的不可打印字符:像Word这样的程序似乎不知怎么地到处注入它们,我看到。。。代码点。。。你们这些人不会相信的。考虑在启动这些数据之前(甚至扫描数据库转储)扫描数据。决定是否将其丢弃,或尝试将其转换为单词“智能”标点符号

    • 从隐含数据结构创建显式数据结构非常困难。如果传入数据有单独的日期字段,则可以将其映射到日期字段;如果它有一个日期作为一大块HTML的一部分,即使该日期在带有id属性的标记中,简单的脚本编写也不会起作用。您可以将离线脚本与BeautifulSoup结合使用,或者(如果您的HTML更好的话)使用更快的lxml来预处理数据集、提取这些隐式字段并将它们保存为隐式格式。考虑创建一个中间数据库,这些修改将要进行。
    • Migrate模块非常优秀,但要获得真正良好的数据保真度并玩更聪明的把戏,您可能需要了解它的钩子系统(Drupal对遵循特定命名方案的函数的术语)以及编写模块以放入这些钩子的基础知识(模块大体上只是一个PHP文件,其中所有函数都以相同的文本开头,即模块文件的名称。)

    • 所有导入的内容都应标记为至少进行粗略检查。您可以在状态为0(即未发布)的情况下导入内容,然后使用“视图”模块创建一个视图来浏览内容并在其他选项卡中打开以进行检查。视图批量操作允许您在视图项旁边设置一组复选框,以便您可以一次证明多个节点

    • 希望运行并重新运行导入,每次修复新内容。尽早检查十个或二十个项目。如果有任何问题,请检查十个或二十个以上。修复并重复导入

    • 评估一次导入运行可能需要多长时间。悲观一点:我们有一次导入,我们在引入完整数据集时预计需要十个小时,但遇到了指数级的减速;在我们最终修复一些缓慢的查询之前,预计需要两周的时间

    • 如果有疑问,或者如果你认为以上技术方面的工作需要比工作本身更多的时间,那么就雇佣临时工来做数据。但你仍然需要良好的质量控制,尽可能早地在他们的工作期间。Drupal开发人员也可以被雇佣:试试你所在国家的相关IRC频道,或者在rele中发布一条说明Vo.Gr.Pr.PrUpal.Org小组。他们比临时工贵,但他们通常写得更好。考虑雇用一个代理:这是一个无耻的插件,因为我为一个工作,但有时最好让专家参与这些特定的工作。

    • 真正好的进口产品总是很难,比你想象的要难。别让它让你失望


    迁移模块看起来很棒。你知道类似的东西吗,但情况正好相反?(即从Drupal切换到Joomla)正如我从标签中感觉到的,你想要django或类似的MVC的Pattern?或者你的意思是“适合”另一个现成的CMS?因为我想尽可能地最小化我的答案。理想情况下,我正在寻找最佳实践和工具,这些不是特定于一个CMS的,但既然django看起来是你选择的CMS,那就去吧