django学习笔记015-模板语言
前面在前面我们已经使用了模板,模板由静态html文件和动态变量组成,动态变量就是由模板语言来生成
一,模板变量
模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。
语法如下:
{{变量}}
当模版引擎遇到点如book.title,会按照下列顺序解析:
1.字典book['title']
2.先属性后方法,将book当作对象,查找属性title,如果没有再查找方法title()
3.如果是格式为book.0则解析为列表book[0]
如果变量不存在则插入空字符串''。
二,模板标签
语法如下:
{% 代码段 %}
for标签语法如下:
{%for item in 列表%}
循环逻辑
{{forloop.counter}}表示当前是第几次循环,从1开始
{%empty%}
列表为空或不存在时执行此逻辑
{%endfor%}
下面的代码是查询出book里面的所有对象并显示在li标签里:
<ul>
{% for i in book %}
<li>{{ i.btitle}}</li>
{%end for %}
</ul>
if标签语法如下:
if 需要有个结尾:endif
{%if ...%}
逻辑1
{%elif ...%}
逻辑2
{%else%}
逻辑3
{%endif%}
比较运算符如下:
注意:运算符左右两侧不能紧挨变量或常量,必须有空格。
==
!=
<
>
<=
>=
布尔运算符如下:
and
or
not
三,过滤器
语法如下:
使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。
如果过滤器需要参数,则使用冒号:传递参数
变量|过滤器:参数
长度length
,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
默认值default
,如果变量不存在时则返回默认值。
日期date
,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:
Y表示年,格式为4位,y表示两位的年。
m表示月,格式为01,02,12等。
d表示日, 格式为01,02等。
j表示日,格式为1,2等。
H表示时,24进制,h表示12进制的时。
i表示分,为0-59。
s表示秒,为0-59。
value|date:"Y年m月j日 H时i分s秒"
四,自定义过滤器
1,创建templatetags包
当系统内部的过滤器不能满足我们的需求的时候我们可以自定义过滤器
在程序目录下新建templatetags
的包(注意这个名字固定,不能随便改):
过滤器就类似函数,继续在templatetags,新建pyhton文件,这个可以随便命名:
2,引入LIbrary库
#引入LIbrary库
from django.template import Library
3,实例化Library对象
register = Library()
4,写一个判断是否为偶数的过滤器函数,并用@register.fiter进行修饰
def mod(num):
return num%2 == 0
这样我们自定义的修饰器就写完了
5,使用
加载过滤器,这里写自己刚刚创建的名称
{% load filter %}
五,注释
在模板中使用如下模板注释,这段代码不会被编译,不会输出到客户端;html注释只能注释html内容,不能注释模板语言。
1)单行注释语法如下:
{#...#}
2)多行注释使用comment标签,语法如下:
{%comment%}
...
{%endcomment%}