Получение 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 %}.

Вы можете сделать это для всего поля потока или для определенных блоков, которые, как вы знаете, нуждаются в доступном объекте запроса.

Другие вопросы по тегам