Получение URL страницы внутри блока в Wagtail
Используя 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-адресу страницы.
Есть ли способ получить доступ к URL-адресу без передачи его в качестве переменной шаблона во время итерации по блокам StreamField?
1 ответ
Из документации по рендерингу шаблона - https://docs.wagtail.io/en/latest/topics/streamfield.html
Письмо
{{ my_block }}
примерно эквивалентен{% include_block my_block %}
, но краткая форма является более строгой, так как она не передает переменные из вызывающего шаблона, такие как запрос или страница; по этой причине рекомендуется использовать его только для простых значений, которые не отображают собственный HTML.
Поэтому вам нужно будет обновить рендеринг блока в шаблоне страницы, чтобы использовать другой синтаксис. {% include_block my_block %}
.
Вы можете сделать это для всего поля потока или для определенных блоков, которые, как вы знаете, нуждаются в доступном объекте запроса.