0

使用 Wagtail 2.9,我正在尝试创建一个允许将其文本内容共享到 Twitter 的块。块本身很简单:

class QuotableShare(StructBlock):
    text = TextBlock(required=True)

    class Meta:
        icon = 'fa-twitter'
        template = 'blocks/quotable_share.html'

但是,我希望能够访问出现该块的页面的 URL,以将其作为链接包含在要共享的消息中。在quotable_share.html模板中,我尝试过:

{{ request.get_full_path }}
{{ request.path }}
{{ request.full_path }}

但是没有人允许我访问页面 URL。

有没有办法在遍历 StreamField 块时访问 URL 而无需将其作为模板变量传递?

4

1 回答 1

2

来自关于模板渲染的文档 - https://docs.wagtail.io/en/latest/topics/streamfield.html#template-rendering

写作{{ my_block }}大致等价于{% include_block my_block %},但缩写形式更具限制性,因为它不传递来自调用模板的变量,例如请求或页面;因此,建议您仅将其用于不呈现自身 HTML 的简单值。

因此,您需要更新页面模板中的块渲染以使用不同的语法。{% include_block my_block %}.

您可以对整个流字段执行此操作,也可以对您知道需要可用请求对象的特定块执行此操作。

于 2020-05-08T11:09:28.460 回答