我正在阅读“水瓶网络开发”。在例子4-3中,
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
我想知道:扩展和导入有什么区别?(我认为它们在用法上非常相似。)在哪种情况下,我将使用扩展或导入?
发布于 2016-08-16 16:31:01
当您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.
发布于 2016-08-16 15:55:11
是有区别的。{% extends parent.html %}
允许您呈现parent.html
并覆盖其中定义的{% block %}
,而{% import %}
只允许您访问模板变量。
因此,示例模板是扩展base.html
并从bootstrap/wtf.html
导入变量。考虑一下,就像python的类继承和导入语句一样。
发布于 2016-08-16 16:01:45
默认情况下,包含的模板将传递当前上下文,而导入的模板则不传递。Jinja文件
默认情况下,所包含的模板不会被缓存,而导入的模板将被缓存。
其原因是导入经常被用作一个包含宏的模块。
最佳实践将是在包含宏的模板上使用导入,而在不使用标记模板的情况下,最好使用include。
https://stackoverflow.com/questions/38979155
复制相似问题