主要内容:
一、模板语言-变量
二、模板语言-过滤器
三、模板语言Tags
四、csrf-token
五、母板
六、组件
七、静态文件相关
八、自定义tag
一、Django模板语言-变量
1、语法:{{ 变量名 }}
2、命名规则:所有的数字、字母、下划线的自由组合
3、点(.)的作用
① 字典查询 {{ dic.key }}
② 属性、方法查询 {{ obj.name }}
③ 索引查询 {{ list1.0 }}
二、Django模板语言-过滤器filter
过滤器的作用是改变变量的显示
1、语法:{{ 变量|filter_name:'参数' }}
① 过滤器支持链式操作,一个过滤器的输出可以作为另一个过滤器的输入
② 过滤器可以要接收参数
③ 过滤器中的参数是空格的话要用引号包起来
④ 管道符|左右两边没有空格
2、Django中提供的内置的过滤器大概有60多中,列举以下几种
① default
如果一个变量是false或空,就设置成默认的值
{{ value|default:"nothing" }}
② length
返回变量的长度,作用于字符串和列表
{{ value|length }}
③ filesizeformat
将值格式化成一个“人类可读”的文件尺寸
{{ value|filesizeformat }}
如果value的值是123456789,输出的将是117.7MB
④ slice
切片,和python中的切片是一样的,顾头不顾尾
{{ value|slice:"1:-1"}}
⑤ date ******
格式化时间
将一个datetime格式的时间格式化成我们想要的格式
{{ now|date:"Y-m-d H:i:s"}}
⑥ safe
为了安全,Django的模板中会对HTML标签和JS等语法标签自动转义成普通的字符串。
但有时,我们不需要这些字符串被转义,就可以通过safe过滤器告诉Django这段代码是安全的不需要转义
value = ‘<a href="#">点我</a>’
{{ value|safe }}
⑦ truncatechars
如果字符串中的字符多于指定的数量,那么会被截断,截断的字符将以可翻译的省略号序列(...)结尾,每个省略号代表一个字符
{{ value|truncatechars:9}} # 包括三个省略号在内,保留9个字符
⑧ truncatewords
按照空格进行截断,因为中文不以空格作为单词的分割,所以这个过滤器对中文没有什么用处
被截断的部分会以省略号(...)结尾
⑨ cut
移除掉指定的字符
{{ value|cut:'a'}}
移除掉value中的a字符
⑩ join
使用字符串连接列表,和python中的join一样
{{ list|join:'&'}}
⒒ timesince
{{ 以前的时间|timesince:之后的时间}}
计算之前的时间和之后的时间的时间差,如果参数省略,就是计算以前的时间和现在的时间差
最小的单位是分钟,如果以前的时间>之后的时间,返回“0分钟”
⒓ timeutil
{{ 以后的时间|timeutil:之前的时间}}
于timesince类似,计算以后的时间和之前的时间差
三、自定义过滤器
自定义过滤器只是一个带一个或两个参数的Python函数
例如过滤器{{ value|foo:"bar" }}是将value和bar作为参数传递给foo,bar这个参数可以省略
1、自定义filter的步骤
① 在app下新建一个Python package 名叫templatetags(一定要叫这个名)
② 在templatetags下新建一个py文件(名字随便取)my_filter.py
③ 在py文件中写函数,实现自定义的filter功能
④ 告诉Django框架多了一个自定义的filter
from django import template
register = template.Library()
@register.filter(name='调用时使用的filter名字,可以和函数名不一样')
def cut(value,arg):
return value.replace(arg, '')
2、使用自定义的filter
① 在HTML文件中导入py文件
{% load my_filter %}
② 重启Django项目
③ 按照普通的使用filter的方法调用
四、Tags(for、if、with)
1、for循环
① 普通的for循环
{% for user in user_list %}
{% endfor %}
for循环可用的一些参数
forloop.counter