Django模板中的“{% extends %}”与“{% include %}”

sigwle7e  于 2023-05-19  发布在  Go
关注(0)|答案(5)|浏览(130)

什么时候特别扩展模板以及什么时候使用include?是包括任何使用的内容,如用户个人资料部分(如关于我在我们网站的角落)?

qrjkbowd

qrjkbowd1#

扩展允许您替换块(例如“内容”),而不是包括构建页面的部分(例如,“header”和“footer”)。这允许您拥有包含完整布局的单个模板,并且您仅通过替换块来“插入”其他模板的内容。
如果用户配置文件在所有页面上都使用,您可能希望将其放在由其他人扩展的基本模板中,或者将其包含到基本模板中。如果您只想在很少的页面上显示用户配置文件,您也可以将其包含在这些模板中。如果用户配置文件是相同的,除了在几个页面上,把它放在你的基本模板内的一个块,然后可以在那些需要不同配置文件的模板中替换。

0md85ypi

0md85ypi2#

查看Django模板的继承性。
扩展父模板的“包含”排序,然后可以覆盖它的不同功能的一部分。
Include在当前上下文中呈现模板。

6tqwzwtp

6tqwzwtp3#

extends创建“父子关系”。在扩展的情况下,可能会覆盖父功能。而include只是呈现html响应。

ttvkxqim

ttvkxqim4#

使用% include ... with参见文档允许覆盖包含页面中的变量。所以不能同意穆罕默德-阿维斯-本-马吉德的回答。
假设这两个子句只是表示页面构造的不同方式:
1.扩展-像页面的外部 Package 器一样使用,

  1. include -在当前页中插入包含的页。
    也可以只在链式嵌套中使用几个扩展页面,但是包含允许我们一个接一个地使用几个包含的页面,而不仅仅是在链式嵌套中。
lxkprmvk

lxkprmvk5#

{% extends %}:

  • 可以扩展一个模板,则子模板可以覆盖父模板中定义的{% block %}。
  • 必须是模板中的第一个模板标记,这意味着在一个模板中只允许使用一个{% extends %}

因此,基本上,您应该将许多页面上使用的常规布局组件(如{% block title %}{% block header %}{% block navigation-bar %}{% block main %}{% block footer %})放入基础模板(如base.html)中,然后在主模板(如index.html)中使用{% extend %}扩展base.html
{% include %}:

  • 可以将多个模板注入(放置)到一个模板中,并且同一模板可以多次注入到一个模板中。

因此,基本上,您应该将几个页面上使用的不规则布局组件放置到index.html等主模板中,除了base.html等基础模板。

相关问题