StreamField中的StructBlock呈现为文本

时间:2017-02-07 10:07:07

标签: wagtail wagtail-streamfield

我遇到一个问题,我在StreamField中有一个StrictBlock:

class DetailsTableBlock(StructBlock):
    title = CharBlock(required=False)
    description = RichTextBlock(required=False)
    table = TableBlock(template="home/blocks/table.html")

class MainStreamBlock(StreamBlock):
    ....
    table = DetailsTableBlock()

当我尝试使用以下方式渲染表时会出现问题:

{{ child.value.table }}

我得到的只有:

{u'data': [[u'test', u'test', u'test'], [u'123', u'asd', u'asd'], [u'123', u'asd', u'asd']], u'first_row_is_table_header': True, u'first_col_is_header': False}

所以问题是如何在StreamField中使用StructBlock渲染html?我正在使用Wagtail 1.7

1 个答案:

答案 0 :(得分:4)

您应该使用:{{ child.value.bound_blocks.table }}

wagtail documentation给出了完整的解释,但简而言之:当你在StreamField的内容上循环输出它时,你有时会获得原始数据值,有时候获取一个BoundBlock对象,该对象知道值以及如何将其呈现为HTML。当您访问StructBlock的子值时,您将获得原始值(因为这通常是在StructBlock模板中访问更有用的东西) - 要获取BoundBlock对象,您需要从StructBlock&读取它#39;而是bound_blocks词典。