Правильно используйте макрос Jinja2. Это действительно полезная функция. В этом случае у вас нет правильного понимания того, как это работает. Этот пост объяснит это с надеждой. Это макрос для навигационного меню. Не забудьте поставить этот макрос где-то над кодом навигационного меню. В противном случае Jinja не найдет его при необходимости.
{% macro nav_link(endpoint, name) %}
{% if request.endpoint.endswith(endpoint) %}
{{name}}
{% else %}
{{name}}
{% endif %}
{% endmacro %}
Вы должны определить этот блок кода отдельно в файле шаблона. Не помещайте его в петлю или в другое место. Когда вы вызываете макрос в любом месте вашего шаблона, этот блок кода будет выполняться и даст вам желаемый результат. Посмотрите, как использовать этот макрос. nav-link()
- как регулярная функция. Вызовите его в своем блоке кода навигатора. Помните, что вы должны сначала определить эти маршруты на сервере. Или вы можете добавить эти макросы в отдельные html-файлы (скажем, macros.html
) и импортировать в них любой макрос в любом месте.
Если вы используете macros.html, как я упоминал выше , вы можете использовать следующий код для импорта своего макроса.
{% from "macros.html" import nav_link with context %}
Это хороший учебник для шаблонов jinja2.
1) Для контроллера просмотра B добавить идентификатор раскадровки
2) Добавить представление контейнера внутри контроллера C
3) Удалить контроллер представления, встроенный в View Controller C
4) Добавить ссылку «Рассказ раскадровки» рядом с диспетчером C, затем перетащить из представления контейнера внутри просмотрите контроллер C в справочной системе раскадровки и создайте «Embed» segue
5) Выберите ссылку на раскадровку и установите для параметра «Reference ID» значение просмотреть идентификатор контроллера B. Также убедитесь, что «Storyboard» имеет имя раскадровки, в которой находится контроллер B.
Вы можете перетащить Storyboard Reference
в это different storyboard
и установить для Storyboard
и Referenced ID
свойства view controller B
.