Вопрос

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

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

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

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

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

<Ол>
  • Как определить связь между смешанным идентификатором и фактическим содержимым? block " пример? У меня есть чувство, что здесь могут отображаться типы контента, но я действительно не знаю, с чего начать!

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

  • Это было полезно?

    Решение

    для этого вы можете создать тег включения и использовать его следующим образом:

    {% 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
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top