view.jinja
{% extends "layout/defaultlayout.jinja" %}
{% include('details.jinja') %}
Run Code Online (Sandbox Code Playgroud)
defaultlayout.jinja
{% import 'elements/macros.jinja' as html %}
Run Code Online (Sandbox Code Playgroud)
但我无法在detail.jinja中使用宏html而不重新包含它
Dan*_*ead 10
从您的示例中看,它看起来好像您正在尝试导入macros.jinja,并将其用作调用的宏html.它不像那样工作.
宏是在jinja文件中定义的,其中包含名称.
macros.jinja:
{% macro dostuff(x,y,z) %}
<a href="{{ x }}" title="{{y}}">{{z}}</a>
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用导入标记导入整个文件:
{% import "macros.jinja" as macros %}
Run Code Online (Sandbox Code Playgroud)
那么,在你当前的命名空间中,你将拥有macros,它指向macros.jinja文件.要使用dostuff宏,您必须致电macros.dostuff(...).
你需要定义一个名为htmlmacros.jinja 的宏,将macros.jinja导入为macros,然后调用它macros.html(...).
那有意义吗?
丹尼尔的回答对我没有帮助.我必须导入以下方式
{% from "post_entity.html" import show_post with context %}
Run Code Online (Sandbox Code Playgroud)
这里post_entity.html是包含宏的show_post方法
文件
然后使用以下方式:
{{show_post(post)}}
Run Code Online (Sandbox Code Playgroud)
这post是从flask 发送到模板的字典render_template.
而macro file文件看起来是这样的:
post_entity.html
{% macro show_post(post) %}
{{post.photo_url}}
{{ post.caption }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9499 次 |
| 最近记录: |