过滤器
- 过滤器作用:模板语言中不允许带参数的函数,如果要对变量进行处理,就需要使用过滤器
- 使用管道符号
|
来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中 过滤器语法:
一个参数时:变量|过滤器 两个参数时:变量|过滤器:参数
过滤器语法说明:
- 第一个参数就是变量
- 如果过滤器需要追加参数,则使用冒号
:
传递参数 - 冒号后面最多可以传一个参数
常用过滤器
- length,返回字符串、列表、元组、字典的元素个数
变量|length
- default,如果变量不存在时则返回默认值
变量|default:默认值
date,用于对日期类型的值进行字符串格式化
- 常用的格式化如下
- Y表示年,格式为4位,y表示两位的年
- m表示月,格式为01,02,12等
- j表示日,格式为1,2等
- H表示时,24进制,h表示12进制的时
- i表示分,为0-59
- s表示秒,为0-59
日期|date:'Y年m月j日 H时i分s秒'
- 常用的格式化如下
过滤器演练
需求
以下为需求实现步骤
正则匹配urls
# 过滤器 url(r'^fillter/$', views.fillter),
视图
# 过滤器 def fillter(request): # 获取数据库书籍列表信息 bookInfos = BookInfo.objects.all() # 构造上下文 context = {'booklist': bookInfos} return render(request, 'Book/fillter.html', context)
- 模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
<ul>
{% for book in booklist %}
{% if book.name|length > 4 %}
<li style="background: red">{{ book.name }}--{{ book.pub_date|date:'Y年m月j日' }}</li>
{% else %}
<li style="background: green">{{ book.name }}--{{ book.pub_date }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
本地化:用于修改日期显示格式
LANGUAGE_CODE = 'zh-Hans' #'en-us' TIME_ZONE = 'Asia/Shanghai' #'UTC'