如何在w中创建自定义块?

时间:2019-06-24 13:30:49

标签: django image wagtail

这是我的StreamField

body = StreamField([
    ('heading', blocks.CharBlock(classname="full title")),
    ('paragraph', blocks.RichTextBlock()),
    ('image', ImageChooserBlock()),
])

我的问题是:如何添加我自己的可以传递给StreamField的块?我的意思是包含多个图像的块,类似于块?在w文档中找不到我的问题的答案。

1 个答案:

答案 0 :(得分:0)

当您询问:

  

我的意思是包含多个图像的块,例如块?

这是您可以尝试的示例,我不确定您要实现的目标是什么,因此我将其保留为通用名称,但可以根据自己的喜好进行修改。

class GalleryBlock(blocks.StructBlock):
    """
    Nameable gallery with multiple images.
    """
    name = blocks.CharBlock(required=True)
    images = blocks.ListBlock(
        blocks.StructBlock([
            ("image", ImageChooserBlock(required=True)),
            ("alt_text", blocks.CharBlock(required=False, max_length=100)),
        ])
    )

然后,您当然需要将其添加到body的StreamField中。

也许是这样的。

body = StreamField([
    ('heading', blocks.CharBlock(classname="full title")),
    ('paragraph', blocks.RichTextBlock()),
    ('image', ImageChooserBlock()),
    ('gallery', GalleryBlock(icon='image')), # add this line
])

希望这可以帮助您了解这些内置块的灵活性和出色程度以及StreamField的出色程度。有时您需要将它们结合起来以构建满足您需求的特定结构。

相关问题