我在阅读“烧瓶网站开发”。 例4-3,Flask中导入和扩展有什么区别?
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
我想知道: 有什么区别之间延伸,并导入(我觉得他们是在使用颇为相似) 在什么情况下,我将使用扩展还是导入?
我在阅读“烧瓶网站开发”。 例4-3,Flask中导入和扩展有什么区别?
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
我想知道: 有什么区别之间延伸,并导入(我觉得他们是在使用颇为相似) 在什么情况下,我将使用扩展还是导入?
当你extend
另一个模板的模板来控制你(称为控件的调用者) - 在“父”模板仅命名块将呈现:
{% extends "base.html" %}
{% block main_content %}
Only shows up if there is a block called main_content
in base.html.
{% endblock main_content%}
另外一个import
简单绑定模板添加到您的模板范围中的名称,并且您可以控制何时何地呼叫它(呼叫者控制呼叫):
{% import "bootstrap/wtf.html" as wtf %}
Some of your own template code with {{ wtf.calls() }} where it makes sense.
还有是有区别。 {% extends parent.html %}
允许您渲染parent.html
并覆盖{% block %}
的定义,{% import %}
只允许您访问模板变量。
因此,示例模板扩展为base.html
并从bootstrap/wtf.html
导入变量。想想它像python的类继承和导入语句。
默认情况下,包含的模板传递给当前上下文,而导入的模板则不传递。 Jinja documentation
默认情况下将包括模版,同时进口将被缓存。
原因是导入通常被用作保存宏的模块。
最好的做法是在包含宏的模板上使用导入,而当你只是想要一些标记模板时,最好使用include。