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