django下模板的包含和继承
包含:
{% include %} 允许在模板中包含其他模板的内容
标签的参数可以是:模板名称、变量 字符串
{% include 'nav.html'%} #模板名称,将被包含的模板中的所有html内容都包含进来,所以一般被包含的模板中直接写需要的内容即可,不需要再另外写入其他的head、body、title之类的部分
{% include 'app/nav.html'%} #模板路径
{% include template_name %} #模板变量
还可以在包含的时候传递变量
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#include
继承:
本质上说:模板继承几居室先构造一个基础框架模板,然后在其子模块中对它所包含站点共用部分和定义进行重载
1、{% block %}
定义块
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#block
2、{% extends %}
继承父模块
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#extends
注意事项:
1、包含和继承可以把一些共用的网页模块独立出来,以减少代码的冗余
2、如果在模块里使用{% extends %}的话,这个标签必须在所有模块标签的前面,否则模板继承不工作
3、通常尽可能模板里的{% block %}越多越好,子模块不必定义所有的父block
4、如果你需要得到父模块的内容,{{ block.supper }}变量可以帮你完成工作 当你需要给父模块添加内容而不是取代它的时候这就很有用
5、不能在同一模板里定义多个同名的{% block %},因为块标签同时在两个地方工作,不仅仅在子模块中,而且在父模块中也填充内容,如果子模块有两个同名的标签,父模板将不能决定使用哪个块内容来使用