Вопрос по django, python, django-cms – Как я могу скопировать страницы CMS с сайта разработки на живой сайт?

1

Я интегрировал Django CMS в проект Django, который был запущен уже более года. В рамках своей деятельности по разработке я преобразовал на страницы CMS те страницы, которые раньше были статическими, прежде чем я добавил Django CMS. Моя база данных для разработки теперь содержит страницы, которые я хотел бы скопировать на действующий сайт, а не требовать, чтобы сотрудники проекта заново создавали эти страницы на живом сайте.

Я искал документацию по Django CMS, но не нашел команды для этого. Я также искал вопросы о github, вопросы о SO и группах Google Django CMS. Единственное, что я нашел, этоэто обсуждение от 3 лет назад. Обсуждение упоминает использованиеdumpdata сброситьcms моделей. Я попробовал это. Дамп содержит информациюоколо страницы (например, кто создал страницу и когда), но она не содержитсодержание страниц.

Живой сайт имеет данные, которые должны быть сохранены. Поэтому я не могу выполнить дамп уровня базы данных на сайте разработки и восстановить на рабочем сайте, поскольку это приведет к удалению или перезаписи данных, которые уже существуют на рабочем сайте.

Я использую Django 1.7 и Django CMS 3.1.0.

Ваш Ответ

1   ответ
3

Обсуждение, на которое вы ссылаетесь, предшествует серии 3.x. Возможно делатьdumpdata для моделей, связанных сcms приложениебыло путь 3 года назад, но, как вы обнаружили, он не работает сейчас.

Я действительно рекомендуюпробуя следующие шаги на зеркале вашего живого сайтапервый так что о любых неожиданностях можно позаботиться перед реальной операцией. Если у вас возникнут проблемы с зеркалом, вы можете потратить время на выяснение проблемы. Как только вы будете готовы изменить свой живой сайт,прежде чем делать что-либо, вы должны сделать резервную копию вашей базы данных. Береженого Бог бережет. Кроме того, кодовая база на сайте должна быть обновлена ​​в соответствии с вашей версией для разработчиков.до вы пытаетесь перемещать данные.

Вы можете использовать эти шаги:

Осмотрите свойINSTALLED_APPS установить и составить список тех приложений, которые являются плагинами CMS, и приложений, от которых зависят эти плагины. Возможно, вам придется обратиться к инструкции по установке некоторых плагинов, чтобы вспомнить, что зависит от чего.

Как только у вас есть список, вы можете выпуститьdumpdata Команда на вашем сайте разработки сcms и приложения, которые вы определили. Для моего сайта я должен сделать:

python manage.py dumpdata --natural-foreign cms filer \
  cmsplugin_filer_file cmsplugin_filer_folder cmsplugin_filer_link \
  cmsplugin_filer_image cmsplugin_filer_teaser cmsplugin_filer_video  \
  easy_thumbnails djangocms_text_ckeditor > data.json

Если вы также создали пользовательские настройки разрешений для Django CMS, выможет нужно редактироватьdata.json вУдалить некоторые или все пользовательские настройки. В моем случае у меня былcms.PageUserGroup экземпляр, который я создал на своем сайте разработчиков. Он ссылался на группу, которой нет на живом сайте, поэтому мне пришлось удалить этот экземпляр изdata.json свалка. В противном случаеloaddata Команда на следующем шаге завершилась ошибкой целостности.

Вы тогда копируетеdata.json на ваш живой сайт и выпускpython manage.py loaddata data.json.

Если у вас есть файлы, которые вы добавили в свойmedia каталог на вашем сайте разработки для создания ваших страниц CMS, вам также нужно скопировать их на ваш живой сайт.

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

Предостережения

Вышеуказанная процедура должна бытьодин раз по рукам. Это не сработает, если вы продолжите вносить изменения в свои страницы разработки, а затем попытаетесь перенести их на свой действующий сайт.

Я упомянул проблемы с разрешениями в шагах выше. Вы реже сталкиваетесь с проблемами разрешения, если у вас естьCMS_PERMISSIONS установлен вFalse, Если установленоTrue, тогда вам, возможно, придется редактировать свой дамп, как указано выше, прежде чем загружать его на сайт. Если вы сделали большую настройку схемы разрешений и у вас есть целая кучаPageUserGroup экземпляры и куча страниц со специальными разрешениями и т. д., тогда вы, скорее всего, столкнетесь с большими трудностями. Я не знаю решения, кроме как отменить всю эту настройку,или же отредактируйте дамп вручную, чтобы он соответствовал вашему живому сайту. Проблема связана с тем, что описанная выше процедура не сбрасывает модели аутентификации (изdjango.contrib.auth). Если вы находитесь в ситуации, когда выМожно безопасно загрузите их на действующий сайт, а затем добавьте их в дамп. Однако, когда у вас есть работающий сайт, который был в работе и данные аутентификации менялись с течением времени, вы не можете просто загрузить модели аутентификации с сайта разработки, поскольку это перезапишет некоторые записи (например, "admi, n" ' пароль будет изменен на пароль, хранящийся в базе данных разработки).

Приведенный выше метод не перемещает историю страниц. Записано сreversion, Если вы хотите переместить историю страницы, вам нужно добавитьreversion в список приложений для выгрузки, но я почти уверен, что это может иметь нежелательные побочные эффекты: это также может повлиять на данные, которые возвращают записи для других приложений, которые используют его в проекте. (В действительности это изменило бы или стерло историю других приложений.)

Похожие вопросы