Редактируемые неструктурированные страницы - PullRequest
1 голос
/ 14 марта 2012

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

  • Несколько разных макетов на страницу
  • Много одноразового текста
  • Нет / очень мало сгенерированного контента из моделей

Я хотел бы разрешить клиентам редактировать содержимое этих страниц через мой интерфейс администратора (яя использую Django для этого проекта), но с требованием, чтобы они не отображались на странице HTML и могли редактировать только те части страницы, которые я указал в качестве полей;например:

  • Заголовки
  • Несколько блоков текстового содержимого
  • Возможно, некоторые блоки предопределенных расположений изображений
  • PDF-файлы, которые нужно встраивать

В тех случаях, когда эти поля значительно различаются на разных страницах.

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

«Лучшая» идея, которая у меня была до сих пор, состоит в том, чтобы сериализовать эти блоки контента после того, как они были отредактированы пользователем, и сохранить их в таблице / модели «Страницы» в моей реляционной базе данных, или простобросить MongoDB или подобное в него.

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

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Я бы реализовал модель ContentBlock, которая имеет .kind (заголовок, текст, изображение, pdf) и .data, которая будет содержать содержимое (если текст) или путь к загруженному файлу pdf / image / и т.п. Вероятно, тогда вы жестко закодировали бы страницы с определенными соответствующими блоками - я бы просто использовал жестко закодированные слагы, например, 'home-title', 'home-intro', 'about-title', 'about-text', 'about-right-photo' и т. Д.

Я бы предложил , а не , используя интерфейс администратора Django. Это гораздо больше подходит для редактирования однородных, не бизнес-логических моделей. Я бы просто добавил представление редактирования, которое вместо этого отображает соответствующие поля формы для блоков - HTML-редактор, загрузка файлов и т. Д. Это можно сделать в администраторе django, но по моему опыту это не стоит проблем - плюс, если у вас есть собственное представление для редактирования, вы можете использовать те же базовые шаблоны, что и на остальной части сайта, что, по мнению IMO, лучше для пользователя.

1 голос
/ 14 марта 2012

Вот пара приложений, которые делают это для вас:

Наряду с django-frontendadmin , это очень круто.

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