1

在一个块内,能够访问调用页面(即其上下文)以便能够将过滤器范围应用于我想在我的块中显示的任何数据集合是有意义的。

这是我拥有的块模板:

<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)}

在我的块模板中,如何访问调用页面模型?

4

1 回答 1

1

使用当前通过标签呈现块的方法是不可能的{{ ... }},因为此时 Django 不会传递上下文。(本质上,您正在渲染块的固定 HTML 表示,它对调用页面一无所知。)当前唯一的解决方法是避免将块模板用于需要访问外部上下文的任何内容,而只是循环而是使用外部模板中的流值。

正在提议引入{% include_block %}模板标签,这将解决这个问题:https ://github.com/torchbox/wagtail/issues/1743

于 2016-06-22T09:31:58.003 回答