gpt4 book ai didi

python-3.x - 如何将计算变量添加到 wagtail StructBlock 模板上下文中?

转载 作者:行者123 更新时间:2023-12-05 01:17:36 24 4
gpt4 key购买 nike

我想根据 StructBlock 中的其他 block 值计算一些 custom 变量,并将此 custom 变量添加到模板上下文中。本质上,我应该能够像这样在 StructBlock 模板中使用这个计算变量 {{ value.custom }}

这是我的StructBlock:

class BaseBlock(blocks.StructBlock):
bool_fld = blocks.BooleanBlock(required=False, default=False)

def get_context(self, *a, **kw):
ctx = super().get_context(*a, **kw)
ctx['custom'] = 1 if self.bool_fld else 0
return ctx

错误:

'BaseBlock' object has no attribute 'bool_fld'

有什么想法吗?

最佳答案

block 对象的 get_context 方法接收 block 值作为它的第一个参数 - 在 StructBlock 的情况下,这是一个类似 dict 的对象,其字段可以访问作为 value['some_field'].

class BaseBlock(blocks.StructBlock):
bool_fld = blocks.BooleanBlock(required=False, default=False)

def get_context(self, value, parent_context=None):
ctx = super().get_context(value, parent_context=parent_context)
ctx['custom'] = 1 if value['bool_fld'] else 0
return ctx

另见 http://docs.wagtail.io/en/v2.0/topics/streamfield.html#template-rendering 上的 get_context 示例.

self.bool_fld 在这里不起作用,因为 Block 实例本身不保存值 - 它们只是充当不同数据表示之间的转换器。 (如果您使用过像 forms.CharField 这样的 Django 表单字段对象, block 非常相似; block 对象和表单字段对象都知道如何呈现作为表单字段传递给它们的值,但它们不'不要坚持那些值(value)观。)

关于python-3.x - 如何将计算变量添加到 wagtail StructBlock 模板上下文中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49633619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com