Удалить трейлинг / из URL в Jinja2 (регулярное выражение?) - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть шаблон для сайта MkDocs, который использует Jinja2.Я пытаюсь добавить ссылку на PDF-версию каждой страницы.PDF всегда имеет то же имя, что и файл уценки.Поэтому я пытаюсь добавить в шаблон ссылку, которая будет автоматически ориентирована на правильный PDF для каждой страницы.Это кажется чище, чем когда авторы добавляют ссылку на каждую страницу вручную.

<a href="{{ page.url|url }}.pdf">Download</a>

Выше приведено почти правильно, но в конце всех URL-адресов есть символ '/',Это означает:

page/url/slug/.pdf

Кажется, ни MkDocs, ни Jinja не предоставляют фильтра для удаления конечных слешей, поэтому мне интересно, можно ли использовать регулярное выражение для его удаления.Я полагаю, это будет так же просто, как \/$?Однако из документов я не вижу, как применить фильтр регулярных выражений в Jinja?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019
<a href="{{ page.url | replace("/$", "")}}.pdf">Download</a>

, где $ - конец строки / конец строки.

Следовательно, /$ означает / в конце.

0 голосов
/ 11 февраля 2019

Итак, я нашел обходной путь для моего конкретного случая, но он неприятен:

<a href='{{ config.site_url }}{{ page.url | reverse | replace("/", "", 1) | reverse }}.pdf'>Download</a>
  1. Предварительно добавьте URL-адрес сайта
  2. Получите URL-адрес текущей страницы, измените его, используйте replaceс необязательным параметром count для удаления FIRST '/', а затем снова поверните его, чтобы вернуть в правильном порядке
  3. Append '.pdf'

Согласно одному изОтветы на вопрос, связанный с Ян выше, вы не можете просто использовать регулярные выражения в Jinja2, не входя в пользовательские фильтры.

...