当Django模板引擎遇到点,例如:{{ book.name }},会按照下列顺序解析:
I、优先当作字典处理:提取出book字典中‘name’键对应的值 II、book不是字典,那么先当作调用name属性,否则当作调用name()方法 III、如果格式如:book.0、book.1…,则解析为列表,获取book[0]、book[1]… 2、标签模板使用中,常用的标签有for、if、比较运算符、布尔运算符等。
使用标签的格式:{% 代码段 %}
{% for item in 列表 %}:for循环遍历列表。
{{ forloop.counter }}:值为当前是第几次循环,从1开始计算。若要从0开始,则使用**forloop.counter()**。
{% empty %}:遍历的列表为空或不存在时,执行此逻辑。
{% endfor %}:for标签结束标志,使用for标签必须添加此标志,否则报错。
注意:
在HTML文件中,用html格式 注释 模板标签格式,如:
{% for item in booklist %}
{{ item.name }}
{% endfor %}
会造成渲染数据显示缺省,若要注释 模板标签格式,尽量使用模板自己的注释方法。(注释方法见 4、注释)
② if标签使用逻辑与python的if一致,但是需添加{% endif %}结束
{% if forloop.counter|numfilter %}
{% else %}
{% endif %}
| 编号 | 书名 | 价格 |
| {{val.id}} | {{val.name}} | {{val.price}} |
| 暂无书籍 |
过滤器可以帮助显示修改的变量,通常需要使用管道符号|来应用过滤器,并用于计算、转换等操作,可以使用在变量、标签中。如果过滤器需要参数,则使用冒号:来向过滤器传递参数。
1、语法格式:变量|过滤器:参数22、自定义过滤器
实际上,过滤器就是Python中定义好的函数,若要自定义过滤器,则需要事先注册,注册后就可以在模板中当作一般过滤器来使用。
2-1 定义步骤1、在注册好的应用文件下新建templatetags文件夹
2、在创建好的templatetags文件夹中新建一个py文件(如:filters.py)用于编写自定义过滤器
3、在创建的filters.py文件中编写自定义过滤器
需先导入django.template下的Library
from django.template import Library
register = Library() # 创建Library对象
@register.filter # register.filter装饰器 装饰过滤器
def numfilter(num):
# 能被2整除,返回True
return num % 2 == 0
@register.filter
def strfilter(str,num):
# 修改字符串显示字数
# str来自|前的变量,num来自:strfilter:num infos|strfilter:num
return str[:num] + '......'
2-2 使用自定义过滤器
特别注意:确保重启Django服务后使再用自定义过滤器!
若要在.html文件中使用自定义过滤器,则需使用load标签引入模块,如下:
{% load 创建的py文件名 %}
使用案例:
| 编号 | 书名 | 价格 |
| {{val.id}} | {{val.name}} | {{val.price}} |
| 暂无书籍 |
单行注释
{# 注释语句 #}:该注释不会显示在浏览器源代码中。
多行注释
{% comment %}
xxxxx:该注释不会显示在浏览器源代码中。
xxxx:该注释不会显示在浏览器源代码中。
{% endcomment %}
5、父模板
使用block标签可以让子模板修改block标签内的内容
1、定义父模板{% block 此块名称 %}
预留区域,此区域内的内容可根据需要更改
{% endblock 此块名称 %}
{% block btitle %}
默认标题
{% endblock btitle %}
{% block bbody %}
默认内容
{% endblock bbody %}
京备案号:粤1234561 xxx版权所有
2、使用父模板
在子页面中使用父模板时先继承父模板
{% extends 'FatherPage.html' %}
使用案例:
{% extends 'FatherPage.html' %}
{% block btitle %}
测试标题
{% endblock %}
{% block bbody %}
啊撒大网的发的噶尔我阿斯顿发放
{% endblock bbody %}
6、标点符号转义
过滤器escape可以实现对变量的HTML转义(默认模板就会转义,一般可省略不写)
{{ 变量|escape }}
若要禁用转义
{{ 变量|safe }}
设置一段代码禁用转义,可以使用autoescape标签,该标签接受 on、off参数
{% autoescape off %} # off 或 on
代码段
{% endautoescape %}



