在Wagtail 2.2中自定义呈现StructBlock

时间:2018-09-06 17:36:33

标签: wagtail

我正在使用带有以下代码的简单StructBlock:

from wagtail.core import blocks

class ProfileById(blocks.StructBlock):

  ids = blocks.CharBlock(label='Profile by ID')

  class Meta:
    template = 'myapp/blocks/profile_by_id.html'
    icon = 'user'

但是,当将此组件呈现到页面时,它应该使用"https://api.server.ours/profiles/?ids=%ids&format=json".format(ids=ids)之类的网址对服务器执行快速API调用,将json转换成Python可以遍历的内容,然后在myapp/blocks/profile_by_id.html模板。

从StructBlock扩展的类是否可以覆盖def以“做事”,从而使我们可以将更多数据放入模板上下文中,以便在渲染模板时也可以利用这些数据?

我试图在wagtail文档中找到类似的内容,但看不到任何东西,只有对Page扩展而言,您可以覆盖serve() def,这是一个完全不同的层次树。

1 个答案:

答案 0 :(得分:2)

块类定义一个get_context方法,可以重写该方法以在模板中插入其他上下文变量:

http://docs.wagtail.io/en/v2.2.2/topics/streamfield.html#template-rendering (搜索is_happening_today以获取相关示例代码)