在一个块中,能够访问调用页面(即其上下文)是有意义的,以便能够将过滤器范围应用于我想要在块中显示的任何数据集合。
这是我拥有的块模板:
<div class="fooblock__items">
{% foo_tag calling_page=??? %}
</div>
如您所见,我想将调用页面发送到名为foo_tag
的自定义标记,以便在标记逻辑中使用调用页面标识符:
@register.inclusion_tag('home/tags/foo.html', takes_context=True)
def foo_tag(context, calling_page=None):
return {'foos': Foo.objects.filter(some_arg=calling_page.id)}
在我的块模板中,如何访问调用页面模型?
答案 0 :(得分:1)
使用当前通过{{ ... }}
标记渲染块的方法是不可能的,因为Django在那时不会传递上下文。 (基本上,您正在渲染块的固定HTML表示,它对调用页面一无所知。)目前唯一的解决方法是避免将块模板用于需要访问外部上下文的任何内容,并且只是循环而是外模板中的流值。
有一项提案正在推出{% include_block %}
模板标记,该标记可以解决此问题:https://github.com/torchbox/wagtail/issues/1743