質問
既存のDrupalサイトをDjangoアプリケーションに移植する最良の方法は何ですか? 約500ページ(主に書籍モジュール)と約50のブログ投稿があります。サードパーティのモジュールを使用していません。 (SEOの目的で)現在のURLを保持し、データベースをDjangoに移行したいと思います。簡単なブログアプリケーションを作成するので、ブログの投稿を移行しても大丈夫です。 Djangoで500ページ以上を提供する最良の方法は何でしょうか? Adminを使用して新しいページを編集/追加したい。
解決
すべてのDjango開発は同様であり、あなたのパターンはパターンに適合します。
-
書籍およびブログ投稿のDjangoモデルを定義します。
-
Djangoの組み込みテスト機能を使用して、そのモデルを単体テストします。
-
いくつかの小さなユーティリティを作成して、レガシーデータをDjangoにロードします。この時点で、Djangoモデルが完璧ではないことに気付くでしょう。良い。修理する。テストを修正します。負荷をやり直します。
-
モデルのデフォルトの管理インターフェースを設定します。この時点で、管理インターフェイスの調整に時間を費やします。データモデルが間違っていることに気付くでしょう。それは良いことです。モデルを修正します。テストを修正します。負荷を修正します。
-
データが正しいので、レガシーページからテンプレートを作成できます。
-
URLマッピングを作成し、データモデルからテンプレートを作成する関数を表示します。
時間をかけてデータモデルを正しく取得します。データモデルが安定している場合、他のすべては非常に単純であるため、本当に重要です。
他のヒント
レガシーデータベースで動作するDjangoモデルを作成できる場合があります(これは過去に行ったことがあります。 manage.py inspectdb
のドキュメントを参照してください)。
ただし、上記のアドバイスに従い、Djangoの規則を使用してクリーンなデータベースを設計し、データを移行します。私は通常、Djangoを介して新しいデータベースに書き込み、未加工のPython DB APIを使用して古いデータベースを読み取る移行スクリプトを作成します(Djangoを複数のデータベースを同時に)。
また、Djangoで利用可能なブログアプリを確認することをお勧めします。 Pinax に含まれているものがニーズに合っている場合は、Pinaxを出発点として使用してください。
S.Lottの回答は数年後も有効です。ツールと形式を使用して分析を完了しようとしています仕事。
今では多くのDrupalエクスポートツールがありますが、同じリクエストで Viewsにアクセスしますデータソース形式としてJSONを選択します。このモジュールは非常に堅牢で、Drupalの最新バージョンで使用できます。 JSON 形式は、解析とエンコードの両方で非常に高速で、読みやすく、Pythonに非常に適しています(< a href = "https://docs.python.org/2/library/json.html" rel = "nofollow noreferrer"> jsonをインポート)。
Views Datasourceを使用すると、ノードID(nid)でソートされたノードビューを作成し、ページごとに制限された数の要素を表示し、ビューパスを構成し、それにフィルター識別子を追加してnidを渡してすべての要素を読み取る空のJSON応答を取得するまで。
Djangoにインポートする場合、フィクスチャをロードするロードデータ。 Views DatasourceはJSONをエクスポートしましたが、Djangoがフィクスチャを期待するようにフォーマットされていません:インポートを実行するカスタム管理コマンド。インポートフローを完全に制御できます。
引数としてnid = 0を渡してコマンドを開始し、プロシージャに次のページからデータを読み取らせ、インポートしてフェッチさせ、前のHTTPリクエストで読み取った最後のnidだけを渡すことができます。ビュー上のパスへのアクセスを制限することもできますが、インポート側で追加の構成が必要です。
たとえば、8コア/ 8 GB Linux仮想マシンのDjango 1.8カスタム管理コマンドと PostgreSQL をDBMSとして、成功およびエラー情報を各ノードのカスタムモデルに記録します。
これらは、これら2つのプラットフォーム間のインポート/エクスポートの基本です。詳細については、このガイドのDrupalからエクスポートしてからDjangoにインポートする主な手順。