Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Drupal移植到Django?_Django_Drupal - Fatal编程技术网

如何从Drupal移植到Django?

如何从Drupal移植到Django?,django,drupal,Django,Drupal,将现有Drupal站点移植到Django应用程序的最佳方式是什么? 我有大约500页(大部分是图书模块)和大约50篇博客文章。我没有使用任何第三方模块。 我想保留当前的URL(用于SEO目的),并将数据库迁移到Django。我将创建一个简单的博客应用程序,所以迁移博客文章应该是可以的。使用Django服务500多页的最佳方式是什么?我想使用Admin来编辑/添加新页面。所有Django开发都是类似的,您的开发将符合这种模式 为您的书籍和博客文章定义Django模型 使用Django的内置测试功能

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

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

  • 为您的书籍和博客文章定义Django模型

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

  • 编写一些小实用程序将遗留数据加载到Django中。此时,您将意识到您的Django模型并不完美。好。修好它。修正测试。重新加载

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

  • 既然您的数据是正确的,您就可以从遗留页面创建模板了

  • 创建URL映射和视图函数以从数据模型填充模板


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

    可以编写Django模型来处理遗留数据库(我过去已经这样做了;请参阅
    manage.py inspectdb
    上的文档)

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

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

    多年后仍然有效,我尝试使用工具和格式完成分析

    现在已经有很多Drupal导出工具了,但出于同样的要求,我选择JSON作为格式。此模块非常可靠,可用于Drupal的最新版本。该格式在解析和编码方面都非常快速,并且易于阅读,并且非常Python友好()

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

    在Django中导入时,您也有一套广泛的工具,从。查看数据源导出的JSON,但它的格式并不像Django期望的那样:您可以编写一个程序来执行导入,在这里您可以完全控制导入流

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

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

    这些是在这两个平台之间导入/导出的基础知识,有关详细信息,我介绍了所有这些基础知识。

    请参阅