Domanda

Quale sarebbe il modo migliore per trasferire un sito Drupal esistente su un'applicazione Django? Ho circa 500 pagine (principalmente moduli di libri) e circa 50 post di blog. Non sto usando moduli di terze parti. Vorrei mantenere gli URL attuali (per scopi SEO) e migrare il database su Django. Creerò una semplice applicazione blog, quindi la migrazione dei post sul blog dovrebbe essere ok. Quale sarebbe il modo migliore per servire oltre 500 pagine con Django? Vorrei utilizzare Admin per modificare / aggiungere nuove pagine.

È stato utile?

Soluzione

Tutto lo sviluppo di Django è simile e il tuo si adatterà al modello.

  1. Definisci il modello Django per i tuoi libri e post di blog.

  2. Unit test quel modello usando le funzionalità di test integrate di Django.

  3. Scrivi alcune piccole utility per caricare i tuoi dati legacy in Django. A questo punto, ti renderai conto che il tuo modello Django non è perfetto. Buono. Aggiustalo. Correggi i test. Ripeti i carichi.

  4. Configura l'interfaccia di amministrazione predefinita sul tuo modello. A questo punto, passerai il tempo a modificare l'interfaccia di amministrazione. Ti renderai conto che il tuo modello di dati è sbagliato. Che è una buona cosa Correggi il tuo modello. Risolvi i tuoi test. Risolvi i tuoi carichi.

  5. Ora che i tuoi dati sono corretti, puoi creare modelli dalle tue pagine legacy.

  6. Crea mappature URL e visualizza le funzioni per popolare i modelli dal modello dati.

Prenditi il ??tempo necessario per ottenere il modello di dati giusto. Importa davvero, perché tutto il resto è molto semplice se il tuo modello di dati è solido.

Altri suggerimenti

Potrebbe essere possibile scrivere modelli Django che funzionano con il database legacy (l'ho già fatto in passato; consultare i documenti su manage.py inspectdb ).

Tuttavia, seguirei i consigli sopra e progetterei un database pulito usando le convenzioni di Django, e quindi migrerei i dati. Di solito scrivo script di migrazione che scrivono nel nuovo database tramite Django e leggo quello vecchio usando le API Python DB non elaborate (mentre è possibile legare Django a anche più database contemporaneamente .

Suggerisco anche di dare un'occhiata alle app di blog disponibili per Django. Se quello incluso in Pinax soddisfa le tue necessità, vai avanti e usa Pinax come punto di partenza.

Risposta S.Lott è ancora valida dopo anni, provo a completare l'analisi con gli strumenti e il formato da fare il lavoro.

Ormai ci sono molti strumenti di esportazione di Drupal, ma con la stessa richiesta vado per Views Origine dati scegliendo JSON come formato. Questo modulo è molto solido e disponibile per l'ultima versione di Drupal. Il formato JSON è molto veloce sia nell'analisi che nella codifica ed è facile da leggere e molto compatibile con Python (< a href = "https://docs.python.org/2/library/json.html" rel = "nofollow noreferrer"> import json ).

Usando l'origine dati Views è possibile creare una vista nodo ordinata per ID nodo (nid), mostrare un numero limitato di elementi per pagina, configurare un percorso di vista, aggiungervi un identificatore di filtro e passargli il nid per leggere tutti gli elementi fino a quando non ottieni una risposta JSON vuota.

Durante l'importazione in Django hai anche una vasta gamma di strumenti, a partire da loaddata per caricare i dispositivi . L'origine dati di Views ha esportato JSON ma non è formattato come Django prevede dispositivi: è possibile scrivere un comando di amministrazione personalizzato per eseguire l'importazione, dove puoi avere il pieno controllo del flusso di importazione.

È possibile avviare il comando passando un nid = 0 come argomento e quindi consentire alla procedura di leggere, importare e quindi recuperare i dati dalla pagina successiva passando semplicemente l'ultimo nid letto nella precedente richiesta HTTP. Puoi anche limitare l'accesso al percorso visualizzato ma hai bisogno di una configurazione aggiuntiva sul lato di importazione.

Per quanto riguarda le prestazioni, ad esempio ho analizzato e importato oltre 15.000 nodi in meno di 10 minuti tramite un comando di amministrazione personalizzato Django 1.8 su una macchina virtuale Linux da 8 core / 8 GB e PostgreSQL come DBMS, registrando le informazioni di successo ed errore in un modello personalizzato per ciascun nodo.

Queste sono le basi per l'importazione / esportazione tra queste due piattaforme, per informazioni dettagliate ho descritto tutte le principali passaggi per esportare da Drupal e importarli in Django in questa guida .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top