Вопрос

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

Это было полезно?

Решение

Вся разработка Django аналогична, и ваша будет соответствовать этому шаблону.

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

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

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

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

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

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

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

Другие советы

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

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

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

С.Лотт ответ по-прежнему актуален спустя годы, я стараюсь завершить анализ с помощью инструментов и формата для выполнения работы.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top