我正在使用带有 jinja 的 flask 。
我知道您可以定义具有多个占位符 block 的基本页面模板:
<html>
<head>
[ standard meta tags, etc go here ]
{% block css %}{% endblock %}
</head>
<body>
[ standard page header goes here ]
{% block content %}{% endblock %}
[ standard page footer goes here ]
{% block javascript %}{% endblock %}
</body>
</html>
而且我知道您可以使用单个占位符定义宏:
{% macro dialog() %}
<div class="dialog">
[ standard dialog header ]
{{ caller() }}
</div>
{% endmacro %}
{% call dialog() %}
<div class="log-in">
Log in or sign up! (etc.)
</div>
{% endcall %}
但是是否可以定义具有多个占位符 block 的宏?
最佳答案
不,你不能。虽然您可以将多个参数传递给宏,但只有一个 caller
可以存在。尽管如此,您仍可以将参数从宏传递回调用上下文并模拟您想要的行为,如下所示:
{% macro twoblocks()%}
<div class="content-a">
{{ caller(True) }}
</div>
<div class="content-b">
{{ caller(False) }}
</div>
{% endmacro %}
{% call(isA) twoblocks() %}
{% if isA %}
A content
{% else %}
B content
{% endif %}
{% endcall %}
关于flask - jinja 是否支持宏中的多个 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23964579/