Django 模板中 "{% extends %}" 和 "{% include %}" 的区别
什么时候应该使用扩展模板,什么时候又应该用包含功能呢?在像用户个人资料这样的内容中(比如我们网站角落的“关于我”部分),使用包含功能有用吗?
7 个回答
5
“extends”这个词用来建立“父子关系”。这意味着你可以从一个已有的东西(父类)继承功能,但有可能会把父类的一些功能覆盖掉。而“include”则只是简单地把HTML内容显示出来,不会有这种覆盖的问题。
12
可以看看关于Django的模板继承的内容。
扩展(extends)有点像“包含”(includes),它会引入父模板,然后可以根据需要覆盖其中的某些部分,以实现不同的功能。
包含(include)则是简单地在当前的上下文中渲染一个模板。
80
扩展功能让你可以替换父模板中的某些部分(比如“内容”),而不是像拼积木一样把不同的部分(比如“头部”和“底部”)组合在一起。这意味着你可以有一个完整的模板,里面包含了你想要的所有布局,而你只需要通过替换某个部分来“插入”其他模板的内容。
如果用户资料在所有页面上都要用,你可能会想把它放在基础模板里,这样其他模板就可以继承这个基础模板。如果你只想在少数几页上显示用户资料,那你也可以直接把它放在那些特定的模板里。如果用户资料在大多数页面上都是一样的,只有少数页面不同,那就把它放在基础模板的一个部分里,这样在需要不同资料的模板中就可以替换掉这个部分。