2009-07-29 3 views
1

Я пытаюсь настроить CMS, написанную на Django. Редакторы содержимого недостаточно гибки, поэтому я пытаюсь найти лучшее решение.Написание шаблона в Django

Не чрезмерно объясняя это, я хотел бы, чтобы он был немного похож на django-better-chunks или django-flatblocks. Вы полностью настраиваете область редактирования из шаблона. Я хочу привязать эти редактируемые области к сочетанию строк и экземпляров объектов. Одним из примеров будут иметь несколько редактируемых областей на основе одного продукта:

{% block product_instance "title" %} 
{% block product_instance "product description" %} 

Так что если у вас есть вид с другим продуктом, как product_instance те два blocks будет показывать разные данные. Я также хотел бы видеть, что есть использование для блоков сайта, которые проходят только через часть строки. По сути, я хотел бы иметь возможность передавать 1-бесконечные идентификаторы.

Но я действительно изо всех сил на двух фронтах здесь:

  1. Как определить отношения между смешанным идентификатором и реальным содержанием «block», например? У меня есть ощущение, что здесь могут присутствовать контенты, но я не знаю, с чего начать смотреть!

  2. И как написать тэг шаблона, чтобы прочитать приведенный выше синтаксис и преобразовать его в объект для рендеринга?

+1

Будет ли t его редактируемые регионы иногда ассоциируются с немоделями? Это требует промежуточной модели для хранения сохраненных данных в базе данных для таких строк. Дайте мне знать, и я приготовлю пример, когда вернусь домой. Звучит как крутая идея! – Cide

+0

В идеале вы бы выбрали любую комбинацию объектов и строк *, но * я не думаю, что это необходимо для моих нужд. Я буду использовать только экземпляры модели и строки. – Oli

+1

Я поднял пример в вашем соответствующем посте. Если вы найдете звук подхода, я попытаюсь найти хороший способ справиться с этим, тоже (поскольку оба они связаны с решением, либо зависит от другого) – Cide

ответ

2

для этого вы можете создать вложение тегов и использовать его как:

{% load my_tags %} 
{% product bicycle <extra vars ...> %} 

Чтобы определить тег, добавьте в ваше приложение/templatetags/mytags.py:

@register.inclusion_tag('results.html') 
def product(item, *extra): 
    #maybe repackage extra variables 
    #and add them to the returned dictionary 
    item_form = ItemForm(item) #form.ModelForm instance 
    return {'item': item, 'item_form':item_form, ...} 

Затем вам понадобится шаблон, который возвращает html для товара:

<h1>{{item.title}}</h1> 
{{item_form}} 
... add some conditional statements depending on extra vars 
Смежные вопросы