view.jinja使用宏如何在一個包含文件
{% extends "layout/defaultlayout.jinja" %}
{% include('details.jinja') %}
defaultlayout.jinja
{% import 'elements/macros.jinja' as html %}
,但我不能夠使用宏HTML在details.jinja沒有它重新加入
view.jinja使用宏如何在一個包含文件
{% extends "layout/defaultlayout.jinja" %}
{% include('details.jinja') %}
defaultlayout.jinja
{% import 'elements/macros.jinja' as html %}
,但我不能夠使用宏HTML在details.jinja沒有它重新加入
從您的示例中看起來好像您嘗試導入macros.jinja
並使用即作爲一個叫做html
的宏。它不這樣工作。
宏在jinja文件中定義,其名稱在那裏。
macros.jinja:
{% macro dostuff(x,y,z) %}
<a href="{{ x }}" title="{{y}}">{{z}}</a>
{% endmacro %}
,然後你可以導入與進口標籤整個文件:
{% import macros.jinja as macros %}
這樣的話,在當前的命名空間中,你將有macros
,它指向macros.jinja文件。要使用宏dostuff
,您必須致電macros.dostuff(...)
。
您需要在macros.jinja中定義一個名爲html
的宏,導入macros.jinja爲macros
,然後用macros.html(...)
調用它。
這有道理嗎?
UndefinedError:'宏'未定義 – Sparr
行情是必須的:'導入「macros.jinja」as macros' –
丹尼爾的回答沒有幫助你。我不得不進口下列方式
{% from "post_entity.html" import show_post with context %}
這裏post_entity.html
是含有大分子與show_post
方法
,然後用於以下文件的方式:
{{show_post(post)}}
這裏post
是一本字典,從瓶送到模板render_template
。
而macro file
文件看起來是這樣的:
post_entity.html
{% macro show_post(post) %}
{{post.photo_url}}
{{ post.caption }}
{% endmacro %}
真的不記得這是否適用於宏,但嘗試'包括( 'details.jinja')與context' – Tigra