Flask中导入和扩展之间有什么区别?

bin*_*ing 3 python jinja2 flask

我正在阅读"Flask web development".在例4-3中,

{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
Run Code Online (Sandbox Code Playgroud)

我想知道:扩展和导入之间有什么区别?(我认为它们在使用上非常相似.)在哪种情况下,我会使用扩展或导入?

Sea*_*ira 5

当您使用extend另一个模板时,模板会控制您(被调用者控制调用者) - 只会呈现"父"模板中的命名块:

{% extends "base.html" %}
{% block main_content %}
Only shows up if there is a block called main_content
in base.html.
{% endblock main_content%}
Run Code Online (Sandbox Code Playgroud)

另一方面,import只需将模板绑定到模板范围内的名称,然后控制何时何地调用它(调用者控制被调用者):

{% import "bootstrap/wtf.html" as wtf %}
Some of your own template code with {{ wtf.calls() }} where it makes sense.
Run Code Online (Sandbox Code Playgroud)