Получение URL страницы внутри блока в Wagtail - PullRequest
0 голосов
/ 08 мая 2020

Используя 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 Ответ

1 голос
/ 08 мая 2020

Из документации по рендерингу шаблона - https://docs.wagtail.io/en/latest/topics/streamfield.html#template -рендеринг

Запись {{ my_block }} примерно эквивалентна {% include_block my_block %}, но краткая форма более строгая, поскольку он не передает переменные из вызывающего шаблона, такого как запрос или страница; по этой причине рекомендуется использовать его только для простых значений, которые не отображают HTML сами по себе.

Поэтому вам нужно будет обновить рендеринг блока в шаблоне страницы, чтобы использовать другой синтаксис. {% include_block my_block %}.

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

...