2008-10-16 18 views
6

將現有的Drupal站點移植到Django應用程序的最佳方式是什麼? 我有大約500頁(主要是書籍模塊)和大約50篇博客文章。我沒有使用任何第三方模塊。 我想保留當前的URL(用於SEO目的)並將數據庫遷移到Django。我將創建一個簡單的博客應用程序,因此遷移博客帖子應該可以。用Django服務超過500頁的最佳方式是什麼?我想使用管理員編輯/添加新頁面。如何從Drupal移植到Django?

+0

請參閱http://stackoverflow.com/questions/199556/how-can-i-port-a-legacy-javaj2ee-website-to-a-modern-scripting-language-phppyth – 2008-10-16 22:13:48

+0

謝謝,我錯過了一個 – Boolean 2008-10-17 05:33:53

回答

12

所有的Django開發都是類似的,你的將適合這種模式。

  1. 爲您的書籍和博客文章定義Django模型。

  2. 單元測試該模型使用Django的內置測試功能。

  3. 編寫一些小工具來將您的遺留數據加載到Django中。在這一點上,你會意識到你的Django模型並不完美。好。修理它。修復測試。重做負載。

  4. 將默認管理界面配置爲您的模型。此時,您將花時間調整管理界面。你會意識到你的數據模型是錯誤的。這是一件好事。修復你的模型。修復你的測試。修復你的負載。

  5. 既然您的數據是正確的,您可以從傳統頁面創建模板。

  6. 創建URL映射和查看函數以從數據模型填充模板。

花時間讓數據模型正確。這真的很重要,因爲如果你的數據模型是穩定的,其他一切都很簡單。

3

編寫與遺留數據庫一起工作的Django模型是可能的(我過去曾經這樣做;請參閱manage.py inspectdb上的文檔)。

但是,我會遵循上面的建議,並使用Django約定設計一個乾淨的數據庫,然後遷移數據。我通常會編寫通過Django寫入新數據庫的遷移腳本,並使用原始Python DB API讀取舊腳本(儘管也可以將Django與multiple databases simultaneously綁定)。

我也建議看看Django的可用博客應用程序。如果Pinax中包含的符合您的需求,請繼續使用Pinax作爲起點。

0

S.Lott answer多年後仍然有效,我嘗試用工具和格式來完成分析工作。

現在有很多Drupal導出工具出現在那裏,但與我要求的格式爲Views DatasourceViews Datasource的要求非常相似。該模塊非常紮實,可用於Drupal的最新版本。 JSON格式在解析和編碼方面速度非常快,並且它易於閱讀並且非常適合Python(import json)。

使用視圖數據源,您可以創建一個按節點id(nid)排序的節點視圖,每頁顯示有限數量的元素,配置一個視圖路徑,添加一個過濾器標識符並傳遞給它的nid讀取所有元素,直到獲得空的JSON響應。

在Django中導入時,您也有很多工具,從loaddata to load fixtures開始。視圖數據源導出的JSON,但它沒有格式化,因爲Django需要裝置:您可以編寫一個custom admin command來執行導入,您可以在其中完全控制導入流。

您可以開始傳遞nid = 0作爲參數的命令,然後讓該過程讀取,導入並從下一頁獲取數據,只傳遞前一個HTTP請求中讀取的最後一個nid。您甚至可以限制對視圖中路徑的訪問,但您需要在導入端進行其他配置。

關於性能,只是例如我解析並經由一個Django 1.8定製管理命令一個8芯/ 8 GB Linux虛擬機上在不到10分鐘的進口15.000+節點和PostgreSQL如DBMS,記錄成功和錯誤信息轉換成每個節點的自定義模型。

這些是在這兩個平臺之間導入/導出的基礎知識,有關詳細信息,我描述了所有的major steps for export from Drupal and then import to Django in this guide