將現有的Drupal站點移植到Django應用程序的最佳方式是什麼? 我有大約500頁(主要是書籍模塊)和大約50篇博客文章。我沒有使用任何第三方模塊。 我想保留當前的URL(用於SEO目的)並將數據庫遷移到Django。我將創建一個簡單的博客應用程序,因此遷移博客帖子應該可以。用Django服務超過500頁的最佳方式是什麼?我想使用管理員編輯/添加新頁面。如何從Drupal移植到Django?
回答
所有的Django開發都是類似的,你的將適合這種模式。
爲您的書籍和博客文章定義Django模型。
單元測試該模型使用Django的內置測試功能。
編寫一些小工具來將您的遺留數據加載到Django中。在這一點上,你會意識到你的Django模型並不完美。好。修理它。修復測試。重做負載。
將默認管理界面配置爲您的模型。此時,您將花時間調整管理界面。你會意識到你的數據模型是錯誤的。這是一件好事。修復你的模型。修復你的測試。修復你的負載。
既然您的數據是正確的,您可以從傳統頁面創建模板。
創建URL映射和查看函數以從數據模型填充模板。
花時間讓數據模型正確。這真的很重要,因爲如果你的數據模型是穩定的,其他一切都很簡單。
編寫與遺留數據庫一起工作的Django模型是可能的(我過去曾經這樣做;請參閱manage.py inspectdb
上的文檔)。
但是,我會遵循上面的建議,並使用Django約定設計一個乾淨的數據庫,然後遷移數據。我通常會編寫通過Django寫入新數據庫的遷移腳本,並使用原始Python DB API讀取舊腳本(儘管也可以將Django與multiple databases simultaneously綁定)。
我也建議看看Django的可用博客應用程序。如果Pinax中包含的符合您的需求,請繼續使用Pinax作爲起點。
S.Lott answer多年後仍然有效,我嘗試用工具和格式來完成分析工作。
現在有很多Drupal導出工具出現在那裏,但與我要求的格式爲Views Datasource的Views 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。
- 1. 移植到Drupal/WordPress的Joomla擴展
- 2. python如何從xlsxwriter移植到xlwt
- 3. 如何將in.mpathd從Solaris移植到Linux?
- 4. 如何從DelayedJob移植到Sidekiq
- 5. 如何從C++ Builder移植?
- 6. 如何使Django服務器可移植?
- 7. 向後從Django的1.4移植到Django的1.3
- 8. 移植到DJango Web(1.0)風格:從Django調用函數模板
- 9. 從Django繼承的模型的移植
- 10. 從VxWorks移植到Quadros/RTXC
- 11. 從ActionBar移植到ToolBar
- 12. 從WAMP移植到LAMP
- 13. 從軸移植到軸2
- 14. 從C2DM到GCM的移植
- 15. 從gforge移植到teamforge
- 16. 移植從形式到WPF
- 17. 從TFS移植到Git
- 18. 從PHP4移植到PHP5
- 19. 從platform.popen移植到subprocess.Popen?
- 20. 從C移植到actionscript
- 21. 從Silverlight 2移植到4
- 22. 從ereg_replace移植到preg_replace
- 23. 從Linux移植到Windows,tm.sys
- 24. 從Sinopia移植到Nexus3
- 25. 從C++移植到C++/CLI
- 26. 從Java移植到MATLAB
- 27. 從Android移植到iPhone
- 28. 從Xamarin.Forms移植到Xamarin.Android
- 29. 從iOS移植到OS X
- 30. 從JBOSS移植j_security_check到Websphere
請參閱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
謝謝,我錯過了一個 – Boolean 2008-10-17 05:33:53