django中模板层详解

2019-04-14 16:23发布

一.模板的功能

产生html,控制页面展示的功能,模板文件包括两部分。 (1)静态内容:html,css,js (2)动态内容:模板语言

二.模板文件的使用

通常是在视图函数中使用模板产生html内容返回给客户端。 a)加载模板文件 loader.get_template
获取模板文件的内容,产生一个模板对象。 b)定义模板上下文 RequeseContext
给模板文件传递数据。 c)模板渲染产生html页面内容 render
用传递的数据替换相应的变量,产生一个替换后的标准的html内容。 最后返回内容给浏览器。 不过,这些功能django已经给我们封装成 render方法。
render(request,要打开的模板路径,字典传递的数据)

三.模板语言

(1)模板变量 模板变量名是由数字,字母,下划线和点组成的,不能以下划线开头。 模板变量的使用: {{模板变量名}} 模板变量的解析顺序: 例如: {{book.title}} 1)
把book当成一个字典,title当成键。
2)
把book当成对象,title当做属性。
3)
把book当成对象,title当成方法。
(2)模板标签
1)模板中的for循环 {% for 循环变量 in 循环对象 %} 循环执行的语句 {%empty%} 循环对象本身是空的时候,执行的代码 {% endfor%} {# 结束循环 #} 2)模板中的判断语句 {% if 条件 %} 满足条件执行的语句 {% elif 条件 %} 满足条件执行的语句 {% else %} 以上条件都不满足时执行的语句 {% endif %} (3)模板过滤器
过滤器用于对模板变量进行操作
1)django内置过滤器
2)自定义过滤器 (4)模板注释
单行注释:
{# 注释#}
多行注释:{% comment %}
注释内容
{% endcomment %} (5)模板继承 在父模板中可以定义块,子类可以重写该部分内容。 例如:父类 内容1 {% block 块名%} 可重写的内容 {% endblock 块名 %} 内容2 子类: {% extends 要继承父类模板的路径%} {# 这样就继承了父类模板所有的内容 #} {% block 块名%} {{ block.super }} {# #} 在这里可以重写父类block块里的内容 {% endblock 块名 %} 模板继承也是为了重用html页面内容。 (6)html转义
要关闭模板上下文字符串的转义:
可以使用 {{ 模板变量|safe}} 也可以使用: {% autoescape off %} 模板语言代码 {% endautoescape %}