考虑到模板代码的重用,Jinja2提供了块 (Block)和宏 (Macro)的功能。块功能有些类似于C语言中的宏,原理就是代码替换;而宏的功能有些类似于函数,可以传入参数。本篇我们就来介绍下块和宏的用法。
我们在子模板的开头定义了”{% extend ‘parent.html’ %}”语句来声明继承,此后在子模板中由”{% block block_name %}”和”{% endblock %}”所包括的语句块,将会替换父模板中同样由”{% block block_name %}”和”{% endblock %}”所包括的部分。
这就是块的功能,模板语句的替换。这里要注意几个点:
另外,我们建议在”endblock”关键字后也加上块名,比如”{% endblock block_name %}”。虽然对程序没什么作用,但是当有多个块嵌套时,可读性好很多。
如果父模板中的块里有内容不想被子模板替换怎么办?我们可以使用”super(>