Django做为Web框架,须要一种很便利的方法动态地生成 HTML 网页,所以有了模板这个概念。模板包含所需 HTML 的部分代码以及一些特殊语法,特殊语法用于描述如何将视图传递的数据动态插入HTML网页中。django
Django 内置的模板引擎包含模板上下文(亦可称为模板变量)、标签 和 过滤器,各个功能说明以下:框架
模板上下文是模板中基本组成单位,上下文的数据由视图函数或视图类传递。它以 {{ variable }} 表示,variable 是上下文的名称,它支持 Python 全部的数据类型,如字典、列表、元组、字符串、整形或实例化对象等。上下文的数据格式不一样,在模板里的使用方式也有所差别,以下所示:ide
# 假如 variable1 = '字符串或整型'<div>{{ variable1 }}div># 输出 “<div>字符串或整型div>” # 假如 variable2 = {'name': '字典或实例化对象'}<div>{{ variable2.name }}div># 输出 “<div>字典或实例化对象div>” # 假如 variable3 = ['元组或列表']<div>{{ variable3.0 }}div># 输出 “<div>元组或列表div>”
标签是对模板上下文进行控制输出,它是以 {% tag %} 表示的,其中tag是标签的名称,Diango内置了许多模板标签,好比 { % if % }(判断标签)、{ % for % }(循环标签)或{ % url % }(路由标签)等。
内置的模板标签能够在 Django 源码(\django\template\defaulttags.py)里找到定义过程,每一个内置标签都有功能注释和使用方法,这里本人只列举经常使用的内置标签,以下表所示:函数
标签 | 描述 |
{ % for % } | 遍历输出上下文的内容 |
{ % if % } | 对上下文进行条件判断 |
{ % csrf_token % } | 生成csrf token的标签,用于防御跨站请求伪造*** |
{ % url % } | 引用路由配置的地址,生成相应的路由地址 |
{ % with % } | 将上下文名从新命名 |
{ % load % } | 加载导入Django的标签库 |
{ % static % } | 读取静态资源的文件内容 |
{ % extends xxx % } | 模板继承,xxx为模板文件名,使当前模板继承xxx模板 |
{ % block xxx % } | 重写父类模板的代码 |
过滤器主要是对上下文的内容进行操做处理,如替换、反序和转义等。经过过滤器处理上下文能够将其数据格式或内容转化为咱们想要的显示效果,并且相应减小视图的代码量。过滤器的使用方法以下:url
{{ variable | filter }}
若上下文设有过滤器,则模板引擎在解析上下文时,首先由过滤器 filter 处理上下文 variable,而后将处理后的结果进行解析并显示在网页上。variable 表明模板上下文,管道符号 "|" 表明当前上下文使用过滤器,filter 表明某个过滤器。单个上下文能够支持多个过滤器同时使用,例如:csrf
{{ variable | filter | lower }}
在使用的过程当中,有些过滤器还能够传入参数,但仅支持传入一个参数,带参数的过滤器与参数之间使用冒号隔开,而且二者之间不能留有空格,例如:对象
{{ variable | date:"D d M Y" }}
Django的内置过滤器能够在源码(\django\template\defaultfilters.py)里找到具体的定义过程,这里本人就不在一一列举。继承
但愿以上内容能够帮助到各位。模板引擎