Flask Jinja:空主回退示例是如何工作的?

Flask Jinja:空主回退示例是如何工作的?,flask,jinja2,Flask,Jinja2,来自jinja官方网站的示例代码: {% if not standalone %}{% extends 'master.html' %}{% endif -%} <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <title>{% block title %}The Page Title{% endblock %}</title> <link rel="stylesheet"

来自jinja官方网站的示例代码:

{% if not standalone %}{% extends 'master.html' %}{% endif -%}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>{% block title %}The Page Title{% endblock %}</title>
<link rel="stylesheet" href="style.css" type="text/css">  
{% block body %}
  <p>This is the page body.</p>
{% endblock %}
{%if-notstandalone%}{%extends'master.html%}{%endif-%}
{%block title%}页面标题{%endblock%}
{%block body%}
这是页面主体

{%endblock%}
据我所知,当standalone为true时,将打印以下代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>{% block title %}The Page Title{% endblock %}</title>
<link rel="stylesheet" href="style.css" type="text/css">  
{% block body %}
  <p>This is the page body.</p>
{% endblock %}
{% if not standalone %}
 <<master.html's code>>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>{% block title %}The Page Title{% endblock %}</title>
<link rel="stylesheet" href="style.css" type="text/css">  
{% block body %}
  <p>This is the page body.</p>
{% endblock %}

{%block title%}页面标题{%endblock%}
{%block body%}
这是页面主体

{%endblock%}
如果standalone为false,则会打印:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>{% block title %}The Page Title{% endblock %}</title>
<link rel="stylesheet" href="style.css" type="text/css">  
{% block body %}
  <p>This is the page body.</p>
{% endblock %}
{% if not standalone %}
 <<master.html's code>>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>{% block title %}The Page Title{% endblock %}</title>
<link rel="stylesheet" href="style.css" type="text/css">  
{% block body %}
  <p>This is the page body.</p>
{% endblock %}
{%如果不是独立的%}

文档中没有立即明确的一点是,当模板扩展另一个模板时,仅呈现子模板中与父模板中具有对应项的块。其他一切都被删除了

因此,在非独立模式下:

{% if not standalone %}
{% only care about blocks also in "master.html" %}
{% endif %}
{# Everything below is ignored #}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>{# The following will be rendered if master has a block named title. #}
{% block title %}The Page Title{% endblock %}
{# All the following will be ignored #}</title>
<link rel="stylesheet" href="style.css" type="text/css">
{# This *may* be rendered, if master.html has a block named "body" #}
{% block body %}
  <p>This is the page body.</p>
{% endblock %}
{%如果不是独立的%}
{%只关心“master.html”中的块%}
{%endif%}
{下面的所有内容都被忽略}
{#如果master有一个名为title的块,则将呈现以下内容。#
{%block title%}页面标题{%endblock%}
{#以下所有内容都将被忽略#}
{#如果master.html有一个名为“body”的块#},则可以*呈现这个*
{%block body%}
这是页面主体

{%endblock%}