菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
262
0

模板

原创
05/13 14:22
阅读数 95654

{%标识符%}

{{变量}}

我们可以在 html 网页中, 穿插这些内容.

过滤器, 用来制定输出格式 {{ship_date|date:"F j, Y"}}, 过滤器是用管道符实现

调用模板的对象是 render 方法

{% include model_name %}, 该标签允许在(模板中) 包含其他模板的内容. model_name: 可以是一个变量, 也可以是用单/双引号硬编码的字符串. 每当在多个模板中出现多个相同的代码时, 就该考虑用这个来减少重复.

例如: {% include 'nav.html' %}

其中, nav.html 模板名称会去判断 TEMPLAGE_DIRS 的模板目录(根据版本的不同, 可能需要考虑目录)

模板继承

看来比{% include %} 更好

模板继承就是先构造一个基础框架模板, 而后在其子模板中对它所包含站点公用部分和定义块进行重载.

头和脚, 用 {% include %} 搞定很简单, 麻烦的是中间部分, 例如

每个页面中都有一个 <h1>helpful timestamp site</h1>标题, 但是这个标题不能放在header.html(include)中, 因为每个页面的<title>不一样, 如果我们将<h1>包含在头部, 我们就不得不包含<title>, 但这样又不允许在每个页面对它进行定制, 怎么办呢?

模板继承,能帮我们解决上面的问题, 你可以对那些不同的代码段进行定义, 而不是共同的代码段.

step1: 定义基础模板, 该架构将由子模板所继承, 例如:

{% block %}{% endblock %} 成对出现

这个叫做 base.html, 定义了一个简单的HTML框架文档, 我们将在本站点的所有页面中使用. 子模板的作用是重载, 添加和保留那些内容. 保存这个文件到你的 templage目录下, 名字为base.html

我们使用了一个 {% block %} 标签, 所有的 {% block %} 标签告诉模板引擎, 子模板可以重载这些内容.

现在我们已经有了一个 base.html, 接下来, 我们要创建一个 current_datetime.html 模板来使用它:

如果想对网站基础部分进行修改, 那么, 只需要修改 base.html 就可以了.

如果在模板中使用 {% extends %}, 必须保证其为模板中的第一个模板标记, 否则, 模板继承将不起作用.

一般来说, 基础模板中的{% block %}标签越多越好, 记住, 子模板不必定义父模板中所有的代码块, 因此你可以合理的缺省值来对一些代码进行填充.

如果发觉自己在多模板之间拷贝代码, 应该考虑放置到父模板的某个{% block %}中.

如果你需要访问父模板中的块的内容, 使用 {{block.super}}这个标签. 这个变量将会表现在父模板的内容中, 如果只想在上级代码基础上添加内容, 而不是全部重载, 该变量就显得非常有用了.

不允许在同一模板中, 定义多个同名 {% block %}

 

发表评论

0/200
262 点赞
0 评论
收藏