Как портировать из Drupal в Django? - PullRequest
6 голосов
/ 17 октября 2008

Как лучше всего перенести существующий сайт Drupal в приложение Django? У меня есть около 500 страниц (в основном модуль книг) и около 50 сообщений в блоге. Я не использую какие-либо сторонние модули. Я хотел бы сохранить текущие URL-адреса (для целей SEO) и перенести базу данных в Django. Я создам простое приложение для блога, поэтому перенос блогов должен быть в порядке. Как лучше всего обслуживать более 500 страниц с помощью Django? Я хотел бы использовать Admin для редактирования / добавления новых страниц.

Ответы [ 3 ]

12 голосов
/ 17 октября 2008

Все разработки Django одинаковы, и ваша будет соответствовать шаблону.

  1. Определите модель Django для своих книг и сообщений в блоге.

  2. Модульное тестирование этой модели с использованием встроенных возможностей тестирования Django.

  3. Напишите несколько небольших утилит для загрузки устаревших данных в Django. На этом этапе вы поймете, что ваша модель Django не идеальна. Хорошо. Почини это. Исправьте тесты. Повторите загрузку.

  4. Настройте интерфейс администратора по умолчанию для вашей модели. На этом этапе вы потратите время на настройку интерфейса администратора. Вы поймете, что ваша модель данных неверна. Что хорошо. Исправьте свою модель. Исправьте свои тесты. Исправьте ваши грузы.

  5. Теперь, когда ваши данные верны, вы можете создавать шаблоны из устаревших страниц.

  6. Создание сопоставлений URL и просмотр функций для заполнения шаблонов из модели данных.

Потратьте время, чтобы получить правильную модель данных. Это действительно важно, потому что все остальное очень просто, если ваша модель данных надежна.

3 голосов
/ 18 октября 2008

Может быть возможно написать модели Django, которые работают с устаревшей базой данных (я делал это в прошлом; см. Документы по manage.py inspectdb).

Однако я бы следовал совету выше и спроектировал чистую базу данных, используя соглашения Django, а затем перенес их. Я обычно пишу сценарии миграции, которые пишут в новую базу данных через Django и читают старую с помощью сырых API-интерфейсов Python DB (хотя можно связать Django с несколькими базами данных одновременно , тоже).

Я также предлагаю взглянуть на доступные приложения для блогов для Django. Если тот, который входит в Pinax , соответствует вашим потребностям, продолжайте и используйте Pinax в качестве отправной точки.

0 голосов
/ 11 октября 2015

S.Lott ответ все еще действителен в течение многих лет, я пытаюсь выполнить анализ с помощью инструментов и формата, чтобы выполнить работу.

В настоящее время существует множество инструментов экспорта в Drupal, но с тем же запросом я обращаюсь к Источнику данных просмотров , выбирающему JSON в качестве формата. Этот модуль очень солидный и доступен для последней версии Drupal. Формат JSON очень быстрый как для синтаксического анализа, так и для кодирования, легко читается и очень удобен для Python ( import json ).

Используя источник данных Views, вы можете создать представление узла, отсортированное по идентификатору узла (nid), показать ограниченное количество элементов на странице, настроить путь просмотра, добавить идентификатор фильтра и передать ему nid для чтения всех элементов. пока вы не получите пустой ответ JSON.

При импорте в Django у вас также есть широкий набор инструментов, начиная с loaddata для загрузки приборов . Просматривает источник данных, экспортированный в формате JSON, но он не отформатирован, поскольку Django ожидает фикстуры: вы можете написать пользовательскую команду администратора для выполнения импорта, где вы сможете полностью контролировать поток импорта.

Вы можете запустить свою команду, передав nid = 0 в качестве аргумента, а затем разрешить процедуре читать, импортировать и затем извлекать данные со следующей страницы, передавая просто последний nid, прочитанный в предыдущем HTTP-запросе. Вы даже можете ограничить доступ к указанному пути, но вам потребуется дополнительная настройка на стороне импорта.

Что касается производительности, например, я проанализировал и импортировал 15.000+ узлов менее чем за 10 минут с помощью пользовательской команды администратора Django 1.8 на виртуальной машине Linux с 8 ядрами / 8 ГБ и PostgreSQL как СУБД, ведение журнала информация об успехах и ошибках в пользовательскую модель для каждого узла.

Это основы для импорта / экспорта между этими двумя платформами, для подробной информации я описал все основные шаги для экспорта из Drupal, а затем импортировал в Django в этом руководстве .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...