Я пишу простую CMS на основе Django. Большинство систем управления контентом полагаются на наличие фиксированной страницы, фиксированного URL-адреса, использование шаблона, который имеет одну или несколько редактируемых областей. Чтобы иметь редактируемый регион, вам нужна страница. Чтобы система определила, с какой страницы вам нужен URL.
Проблема возникает, когда вы больше не имеете дело со «страницами» (будь то страницы FlatPages или что-то еще), а скорее с экземплярами из другой модели. Например, если у меня есть Модель продуктов, я могу создать страницу с подробными данными, в которой есть несколько редактируемых областей.
Я мог бы встроить эти области в модель, но в моем случае существует несколько моделей, и существует большая разница в том, сколько данных я хочу показать.
Поэтому я хочу построить CMS на уровне шаблона и указать, какой блок (редактируемая область) основан на экземпляре страницы или модели, которую он использует.
Мне пришла в голову мысль, что, возможно, я смогу сбросить пользовательские теги шаблонов на странице следующим образом:
{% block unique_object "unique placeholder name" %}
И это нашло бы «блок» на основе двух переданных аргументов. Пример:
<h1>{{ product_instance.name }}</h1>
{% block product_instance "detail: product short description" %}
{% block product_instance "detail: product video" %}
{% block product_instance "detail: product long description" %}
Звучит элегантно, верно? Ну, проблема, с которой я сталкиваюсь, состоит в том, как мне создать «ключ» для зоны, чтобы я мог вытащить правильный блок? Я буду иметь дело с совершенно неизвестным объектом (это может быть объект "страницы", URL, экземпляр модели, что угодно - это может быть даже лодка </fg>
).
Другие микро-приложения Django должны делать это. Вы можете пометить что угодно с помощью django-tagging, верно? Я пытался понять, как это работает, но я рисую пробелы.
Так, во-первых, я сумасшедший? И если предположить, что нет, и это выглядит как относительно разумная идея для продолжения, то как мне связать объект + строку с блоком / редактируемой областью?
Примечание: редактирование будет выполнено на странице , поэтому нет никакой реальной проблемы позволить пользователям редактировать зоны. Мне не нужно делать никаких обратных действий в админке. Моя конечная мечта - позволить третьему аргументу указать, что это за область контента (текст, изображение, видео и т. Д.). Если у вас есть какие-либо комментарии по этому поводу, я буду рад их прочитать!