2017-02-07 56 views
0

我有一个问题,我有一个StreamField内StrictBlock:StructBlock呈现为文本

{{ child.value.table }}

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

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

,当我尝试使用呈现表出现的问题

我得到的是:

{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?我使用的鹡鸰1.7

回答

2

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

完整说明从http://docs.wagtail.io/en/v1.8.1/topics/streamfield.html#boundblocks-and-values给出,但在短:当你遍历一个StreamField输出它的内容,你有时会原始数据值,并且有时会得到一个知道该值以及如何将其呈现为HTML的对象。当你访问一个StructBlock的子值时,你会得到原始值(因为这通常是在StructBlock模板中访问的更有用的东西) - 为了得到BoundBlock对象,你需要改为从StructBlock的bound_blocks字典中读取它。

+0

再次感谢您的详细解释。 bound_blocks就像一个魅力 –