2008-10-16 12 views
6

Jaki byłby najlepszy sposób przeniesienia istniejącej witryny Drupal do aplikacji Django? Mam około 500 stron (głównie moduł książki) i około 50 wpisów na blogu. Nie używam żadnych modułów zewnętrznych. Chciałbym zachować obecny URLS (do celów SEO) i przeprowadzić migrację bazy danych do Django. Stworzę prostą aplikację blogową, więc migrowanie postów na blogu powinno być w porządku. Jaki byłby najlepszy sposób wyświetlania ponad 500 stron za pomocą Django? Chciałbym użyć Administratora do edycji/dodawania nowych stron.Jak przelecieć z Drupal do Django?

+0

Zobacz http://stackoverflow.com/questions/199556/how-can-i-port-a-legacy-javaj2ee-website-to-a-modern-scripting-language-phppyth –

+0

Dziękuję, tęskniłem za tym jeden – Boolean

Odpowiedz

12

Wszystkie projekty Django są podobne, a Twój pasuje do wzoru.

  1. Określ model Django dla swoich książek i wpisów na blogu.

  2. Jednostka przetestuj ten model, używając wbudowanych funkcji testowych Django.

  3. Napisz małe narzędzia do ładowania starszych danych do Django. W tym momencie zdasz sobie sprawę, że twój model Django nie jest doskonały. Dobry. Napraw to. Napraw testy. Ponów obciążenia.

  4. Skonfiguruj domyślny interfejs administracyjny do swojego modelu. W tym momencie poświęcisz czas na ulepszenie interfejsu administratora. Uświadomisz sobie, że twój model danych jest nieprawidłowy. Co jest dobre. Napraw swój model. Napraw swoje testy. Napraw swoje obciążenia.

  5. Teraz, gdy Twoje dane są poprawne, możesz tworzyć szablony ze starszych stron.

  6. Tworzenie odwzorowań adresów URL i wyświetlanie funkcji do wypełniania szablonów z modelu danych.

Poświęć trochę czasu, aby uzyskać prawidłowy model danych. To naprawdę ma znaczenie, ponieważ wszystko inne jest bardzo proste, jeśli twój model danych jest solidny.

+0

Dzięki, mam teraz lepszy obraz w głowie. – Boolean

3

Może istnieć możliwość napisania modeli Django, które działają ze starszą bazą danych (robiłem to w przeszłości, zobacz dokumentację na stronie manage.py inspectdb).

Jednak postępuję zgodnie z powyższymi wskazówkami i zaprojektuję czystą bazę danych przy użyciu konwencji Django, a następnie zmigruję dane. Zwykle piszę skrypty migracyjne, które piszą do nowej bazy danych przez Django i czytają stare, używając surowych interfejsów API Python DB (chociaż możliwe jest również powiązanie Django z multiple databases simultaneously).

Proponuję również zapoznać się z dostępnymi aplikacjami do blogowania dla Django. Jeśli ta zawarta w Pinax pasuje do twoich potrzeb, śmiało możesz użyć Pinax jako punktu wyjścia.

0

S.Lott answer jest nadal ważny po latach, staram się ukończyć analizę za pomocą narzędzi i formatu, aby wykonać zadanie.

Istnieje wiele narzędzi eksportu Drupala, ale z tym samym żądaniem idę na Views Datasource wybierając JSON jako format. Ten moduł jest bardzo solidny i dostępny dla ostatniej wersji Drupala. Format JSON jest bardzo szybki zarówno podczas analizowania, jak i kodowania, a ponadto jest łatwy do odczytania i przyjazny dla Pythona (import json).

Używanie widoków Źródło danych umożliwia utworzenie widoku węzła posortowanego według identyfikatora węzła (nid), wyświetlenie ograniczonej liczby elementów na stronie, skonfigurowanie ścieżki widoku, dodanie do niej identyfikatora filtru i przekazanie go do nid do odczytu wszystkich elementy, dopóki nie uzyskasz pustej odpowiedzi JSON.

Podczas importowania w Django masz również szeroki zestaw narzędzi, zaczynając od loaddata to load fixtures. Widoki Źródło danych wyeksportowało JSON, ale nie jest sformatowane, ponieważ Django oczekuje urządzeń: możesz napisać custom admin command, aby wykonać import, gdzie możesz mieć pełną kontrolę nad importem.

Możesz uruchomić swoje polecenie przekazując nid = 0 jako argument, a następnie pozwolić procedurze odczytać, zaimportować, a następnie pobrać dane z następnej strony, przekazując po prostu ostatni nid wczytany w poprzednim żądaniu HTTP. Możesz nawet ograniczyć dostęp do ścieżki w widoku, ale potrzebujesz dodatkowej konfiguracji po stronie importu.

Jeśli chodzi o wydajność, na przykład przeanalizowałem i zaimportowałem 15 000+ węzłów w mniej niż 10 minut za pomocą niestandardowego polecenia administratora Django 1.8 na maszynie wirtualnej z 8 rdzeniami/8 GB Linuksa i PostgreSQL jako DBMS, rejestrując informacje o sukcesie i błędzie w niestandardowy model dla każdego węzła.

To są podstawy do importu/eksportu między tymi dwoma platformami, dla szczegółowych informacji opisałem wszystkie major steps for export from Drupal and then import to Django in this guide.