遍历鹡鸰内容

Looping through wagtail contents

我正在使用 wagtail 来管理我的 Django 应用程序中的内容。在我的模型中,我使用了这样的结构化块:

# prefered 
class SectionBlock(blocks.StructBlock):
    header = blocks.CharBlock()
    content = blocks.RichTextBlock()

我的页面应该有多个不同的 header,例如介绍、结论等,但是模板迭代会不断循环第一个 header(介绍)。问题是我是否重命名 SectionBlock class 中的每个项目以便我可以直接在模板中访问它,或者有更简单的解决方案?

class SectionBlock(blocks.StructBlock):
    header1 = blocks.CharBlock()
    content1 = blocks.RichTextBlock()
    header2 = blocks.CharBlock()
    content2 = blocks.RichTextBlock()
{% for block in blocks %}
{{ block.value.header1 }}
{{ block.value.header2 }}
{% endfor %}

自定义 SectionBlock 可以与 StreamField 一起使用,允许编辑者根据需要添加任意数量的部分。

models.py

class SectionBlock(blocks.StructBlock):
    header = blocks.CharBlock()
    content = blocks.RichTextBlock()


class ExamplePage(Page):
    body = StreamField(
        [
            ('section', SectionBlock())
        ], blank=True
    )

template.html

{% for section in page.body %}
   {{ section.value.header }}
   {{ section.value.content }}
{% endfor %}