查看.jinja
{% extends "layout/defaultlayout.jinja" %}
{% include('details.jinja') %}
默认布局.jinja
{% import 'elements/macros.jinja' as html %}
但我无法在 details.jinja中使用宏html而不重新包含它
丹尼尔的回答对我没有帮助。我必须通过以下方式导入
{% from "post_entity.html" import show_post with context %}
这post_entity.html
是包含带有show_post
方法
的宏的文件
然后使用以下方式:
{{ show_post(post) }}
这是从flaskpost
发送到模板的字典。
该文件看起来像这样:
post_entity.html render_template
macro file
{% macro show_post(post) %}
{{ post.photo_url }}
{{ post.caption }}
{% endmacro %}
从您的示例中,它看起来好像您正在尝试 import macros.jinja
,并将其用作名为html
. 它不是那样工作的。
宏是在 jinja 文件中定义的,其中有名称。
宏.jinja:
{% macro dostuff(x,y,z) %}
<a href="{{ x }}" title="{{y}}">{{z}}</a>
{% endmacro %}
然后您可以使用 import 标签导入整个文件:
{% import "macros.jinja" as macros %}
那么,在您当前的命名空间中,您将拥有macros
指向 macros.jinja 文件的 . 要使用dostuff
宏,您必须调用macros.dostuff(...)
.
您需要在 macros.jinja 中定义一个宏html
,将 macros.jinja 导入为macros
,然后使用macros.html(...)
.
那有意义吗?