[使用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作为模板变量传递的情况下访问URL?
从有关模板渲染的文档-https://docs.wagtail.io/en/latest/topics/streamfield.html#template-rendering
编写
{{ my_block }}
大致等同于{% include_block my_block %}
,但缩写形式更具限制性,因为它不传递调用模板或请求或页面中的变量;因此,建议您仅将其用于不呈现其自身HTML的简单值。
因此,您将需要在页面模板中更新块渲染以使用其他语法。 {% include_block my_block %}
。
您可以对整个流字段或您知道需要请求对象可用的特定块执行此操作。