Можете ли вы создавать компоненты в Flask / Jinja для вставки в различные шаблоны - PullRequest
1 голос
/ 25 апреля 2019

Допустим, я сделал действительно классный макет окна поиска, который я хотел бы использовать

например.

<div class='someClass'>
    <input class='fancyInput'>
</div>

Возможно ли повторно использовать этот фрагмент в других шаблонах в том жеЯ могу расширить шаблон, но вместо этого «импортировать», так сказать, фрагмент.Как и резерв {% extended%}

Мне бы хотелось иметь блоки html, которые я могу использовать повторно, но вставлять в разные области в зависимости от страницы.

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

вот пример псевдо html / jinja

Фрагмент

{% component fancyInput %} # not real jinja

<div class='someClass'>
    <input class='fancyInput'>
</div>

{% endcomponent %}

Тогда давайте скажем на случайной страницегде-то

<html>
<body>
    <div class='container'><p>Some text!</p></div>
    {% import component fancyInput}
</body>
</html>

рендеринг HTML будет

<html>
<body>
    <div class='container'>
        <p>Some text!</p>
    </div>
    <div class='someClass'>
        <input class='fancyInput'>
    </div>
</body>
</html>

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Jinja2 использует макросы. После определения макроса его можно вызывать для визуализации элементов.

Итак, если вы определите макрос в шаблоне, например:

  {% macro newComponent(text) -%}
      <div class='container'><p>{{text}}</p></div>
  {%- endmacro %}

Тогда он может быть вызван в любом файле с

{{ newComponent('Insert Text') }}

Вот ссылка на документацию

Также пост переполнения стека на макросах Параметризованные многоразовые блоки с шаблонизатором Jinja2 (Flask)

0 голосов
/ 25 апреля 2019

Используйте include для включения всего файла шаблона в текущий шаблон, документы

Пример из документации:

{% include 'header.html' %}
    Body
{% include 'footer.html' %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...