一.模板的功能
产生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 %}