Flask jinja是否支持宏中的多个块?
我在用烧瓶和金贾 我知道您可以使用多个占位符块定义一个基本页面模板:Flask jinja是否支持宏中的多个块?,flask,jinja2,Flask,Jinja2,我在用烧瓶和金贾 我知道您可以使用多个占位符块定义一个基本页面模板: <html> <head> [ standard meta tags, etc go here ] {% block css %}{% endblock %} </head> <body> [ standard page header goes here ] {% block content
<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>
[标准元标记等,请点击此处]
{%block css%}{%endblock%}
[此处为标准页眉]
{%block content%}{%endblock%}
[此处为标准页脚]
{%block javascript%}{%endblock%}
我知道您可以使用单个占位符定义宏:
{% 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 %}
{%macro dialog()%}
[标准对话框标题]
{{caller()}}
{%endmacro%}
{%call dialog()%}
登录或注册!(等等)
{%endcall%}
但是可以定义一个包含多个占位符块的宏吗?不可以。虽然可以向宏传递多个参数,但只能存在一个调用方。不过,您可以将参数从宏传递回调用上下文,并模拟所需的行为,如下所示:
{% 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 %}
{%macro-twoblocks()%}
{{caller(True)}}
{{调用方(错误)}
{%endmacro%}
{%call(isA)twoblocks()%}
{%if isA%}
内容
{%else%}
B含量
{%endif%}
{%endcall%}
谢谢@muffel!这正是我想要的。