Spec-Zone.ru › Wagtail 3

Типизированный блок таблицы

Модуль typed_table_block предоставляет тип блока StreamField для создания таблиц, состоящих из смешанных типов данных. Разработчики могут указать набор типов блоков (таких как RichTextBlock или FloatBlock) для использования в качестве типов столбцов; авторы страниц могут затем создавать таблицы любого размера, выбирая типы столбцов из этого списка, так же, как они вставляли бы блоки в StreamField. В каждом столбце авторы вводят данные, используя стандартное средство редактирования для данного поля (например, редактор Draftail для ячеек с форматированным текстом).

Установка

Добавьте "wagtail.contrib.typed_table_block" в ваш INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    "wagtail.contrib.typed_table_block",
]

Использование

TypedTableBlock можно импортировать из модуля wagtail.contrib.typed_table_block.blocks и использовать в определении StreamField. Так же, как StructBlock и StreamBlock, он принимает список кортежей (name, block_type) для использования в качестве дочерних блоков:

from wagtail.contrib.typed_table_block.blocks import TypedTableBlock
from wagtail import blocks
from wagtail.images.blocks import ImageChooserBlock

class DemoStreamBlock(blocks.StreamBlock):
    title = blocks.CharBlock()
    paragraph = blocks.RichTextBlock()
    table = TypedTableBlock([
        ('text', blocks.CharBlock()),
        ('numeric', blocks.FloatBlock()),
        ('rich_text', blocks.RichTextBlock()),
        ('image', ImageChooserBlock())
    ])

Для максимального упрощения пользовательского интерфейса для авторов рекомендуется использовать базовые встроенные типы блоков Wagtail в качестве типов столбцов, как показано выше. Однако поддерживаются все пользовательские типы блоков и параметры. Например, чтобы определить тип столбца «страна», состоящий из раскрывающегося списка с вариантами стран:

    table = TypedTableBlock([
        ('text', blocks.CharBlock()),
        ('numeric', blocks.FloatBlock()),
        ('rich_text', blocks.RichTextBlock()),
        ('image', ImageChooserBlock()),
        ('country', ChoiceBlock(choices=[
            ('be', 'Belgium'),
            ('fr', 'France'),
            ('de', 'Germany'),
            ('nl', 'Netherlands'),
            ('pl', 'Poland'),
            ('uk', 'United Kingdom'),
        ])),
    ])

На вашей странице шаблона тег {% include_block %} (вызываемый либо на отдельном блоке, либо на значении StreamField в целом) будет отображать любые типизированные блоки таблиц как HTML-элемент <table>.

{% load wagtailcore_tags %}

{% include_block page.body %}

Или:

{% load wagtailcore_tags %}

{% for block in page.body %}
    {% if block.block_type == 'table' %}
        {% include_block block %}
    {% else %}
        {# rendering for other block types #}
    {% endif %}
{% endfor %}

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v3.0.3/reference/contrib/typed_table_block.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API