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

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

Я искал документацию по Django CMS, но не нашел команды для этого. Я также искал вопросы о github, вопросы о SO и группах Google Django CMS. Единственное, что я нашел, это[это обсуждение](https://groups.google.com/d/topic/django-cms/u-TAiHZ7MiM/discussion) от 3 лет назад. Обсуждение упоминает использование`dumpdata` сбросить`cms` моделей. Я попробовал это. Дамп содержит информациюоколо страницы (например, кто создал страницу и когда), но она не содержитсодержание страниц.

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

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

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

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

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

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

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

Если вы также создали пользовательские настройки разрешений для 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` в список приложений для выгрузки, но я почти уверен, что это может иметь нежелательные побочные эффекты: это также может повлиять на данные, которые возвращают записи для других приложений, которые используют его в проекте. (В действительности это изменило бы или стерло историю других приложений.)