一些常用会用到的内置标签。
include
往往制作模板的时候,我们会将一些公共部分,比如header、footer、aside等部分,抽离出来独立存放,不需要在每一个页面都重复编写,只需要在每一个页面引入它们即可。这个时候,我们可以使用include标签。
include可以将一个拆分出来的代码片段(fragment)嵌入到完整的文档中。使用形式是。
如果需要引入的模板不存在的话,它会报错,如我我们不知道引入的模板是否存在,则需要增加if_exists
判断。
这样如果header.html模板存在的话,则会引入,即使不存在,也不会报错,只是被忽略掉了。
默认情况下,include引入的模板,它会继承当前模板的所有变量,如果想给include引入的模板增加另外的变量,可以使用with
来增加。如:
这样就给include引入的模板定义了title变量,当前模板的其他变量它同样也可以继续使用了。
如果需要声明多个变量给include引入的模板使用,可以连续使用key=value
的形式增加,它们之间使用空格隔开,如:
如果只想让include引入的模板使用指定的几个变量,而不是当前模板的所有变量,可以使用only来做限制:
然后在header.html中使用:
<!DOCTYPE html>
<html lang=“en”>
<head>
<meta charset="UTF-8">
<title>}</title>
<meta name="keywords" content="}">
</head>
macro
iris.Django
模板引擎可以很简便的定义一些宏函数代码片段。宏代码片段相当于一个函数,它只能调用从参数传入的变量。类似于使用include。不过macro有限定的作用域。如文章我们给文章列表的文章item使用macro
:
定义一个宏函数
<li class=“item”>
<a href="/archive/}" class="link">
<h5 class="title">}</h5>
</a>
</li>
使用定义的宏函数
}
同时宏函数还可以保存到独立的文件中,然后通过import来嵌套进来。当一个文件中包含多个宏函数,可以使用,
将隔开连续引入多个宏函数。还可以使用as来设置别名:
保存宏函数到 archive.helper
<li class=“item”>
<a href="/archive/}" class="link">
<h5 class="title">}</h5>
</a>
</li>
<li class=“item”>
<a href="/archive/}" class="link">
<h5 class="title">}</h5>
</a>
</li>
在index.html中引入:
用import引入:
调用:
}
}
}
extends
模板的继承有点像ppt中的母版一样,我们定义好一个骨架,将一个页面都写好,大部分不用变动,需要变动的部分使用block标签包裹起来:
<title>base</title> <!-- 如果扩写了就是扩写的,不扩写就还是用base -->
这样定义的好处是,可以在继承它的模板中,重写这个block,不重写就按母版来显示。
比如我们定义了一个base.html
<!DOCTYPE html>
<html lang=“en”>
<head>
<meta charset="UTF-8">
<title>base</title> <!-- 如果扩写了就是扩写的,不扩写就还是用base -->
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<style>
* {
margin: 0;
padding: 0;
}
.header {
width: 100%;
height: 50px;
background-color: #369;
}
</style>
</head>
<body>
<div class=“header”></div>
<div class=“container”>
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-9">
<h4>content</h4>
</div>
</div>
</div>
</body>
</html>
然后在index.html中继承这个base.html
<title>index</title>
<div class="col-md-9">
<h3>index</h3>
<p>index content</p>
</div>
这样就是使用base.html作为母版,并在index.html 中重写了title、content两个部分。
注意:如果你在模版中使用 标签,它必须是模版中的第一个标签。其他的任何情况下,模版继承都将无法工作。
在使用继承的情况下,尽可能将可能会变动的数据,都包裹在block中,因为block即使在后续的页面不重写,也不影响模板的解析,而需要重写的时候就更方便。
同样地,如果后续写到某一块,发现多个页面都需要使用到,那么这时候,就把添加到base.html中去,让它成为母版的一部分。
Django 模板中遍历复杂数据结构的关键是句点字符.
,变量输出边界定义是双大括号。有一个对象是people,它有Name、Gender、Level属性,在模板中输出就是:
<ul>
<li>网站:}</li>
<li>名字:}</li>
<li>性别:}</li>
<li>等级:}</li>
</ul>
func (archive *Archive) GetThumb()
,那么在模板中,是可以直接调用的。如:
<li class=“item”>
<a href="/archive/}" class="link">
<img src="}" alt="}" />
<h5 class="title">}</h5>
</a>
</li>
模板可以直接使用}
来调用内置的archive.GetThumb()
方法。now
标签提供在模板中输出当前时间。now格式化时间的参数遵循golang的时间格式化规则。如果增加fake 参数,则会输出一个特定的加时间代替当前时间。如:
lorem
随机生成拉丁文样本数据—–
iris.Django
的注释我们使用大括号+#来实现注释:
单行注释使用 ,多行注释使用
这里注释很多行
。
示例:
空单行注释
单行注释
用有效标签填充单行注释
#}
用无效标签填充单行注释
#}
用无效语法填充单行注释
wow #}
空块注释
填充文本单行块注释filled block comment
空多行块注释
阻止带有其他标签的注释
}
do stuff
阻止其中带有无效标签的注释
使用无效语法阻止注释
注释之间的常规标签,以确保其在词法分析器中不会中断
after if
All done
上一篇: 没有了
下一篇: 安企CMS#更多过滤器#