7.Djnago过滤器总结

272 阅读2分钟

文章仅供学习,错误欢迎提出

小写 {{name|lower}}

大写 {{name|upper}}

串联:先转义文本到HTML,再转换每行到

标签 {{mytext|escape|linebreaks}}

显示前30个字 {{bio|truncateword:''30"}}

显示前30个英文 {{bio|truncateword:"30"}}

格式化时间 {{pub_date|"F j, Y"}}

添加数值 {{123|add:"5"}}

{{ "abcd"|capfirst }} 第一个字母大写

{{ "abcd"|center:"50" }} 输出指定长度的字符串,并把值对中

{{ "123spam456spam789"|cut:"spam" }} 查找删除指定字符串

{{ value|default:"(N/A)" }} 值不存在,使用指定值

{{ value|default_if_none:"(N/A)" }} 值是None,使用指定值

{{ 列表变量|dictsort:"数字" }} 排序从小到大

{{ 列表变量|dictsortreversed:"数字" }} 排序从大到小

{{ list|first }} 返回列表第一个元素

{{ 列表变量|dictsort:"数字" }} 排序从小到大

{{ 列表变量|dictsortreversed:"数字" }} 排序从大到小

{% if 92|divisibleby:"2" %} 判断是否整除指定数字

{{ string|escape }} 转换为html实体

{{ 21984124|filesizeformat }} 以1024为基数,计算最大值,保留1位小数,增加可读性

{{list|join:","}} 用指定分隔符链接列表

{{list|length}} 返回列表个数

https://www.douban.com/note/145065606/

后台过滤器

在后台我们通过获取表的数据会有一下几种方法,在这里我们假设Student是我们的表

Student.objects.all()获取所有的数据

Student.objects.get(name="1") 得到名字为1的数据,只能得到一条,多条会出现错误

get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filter

Student.objects.filter(name=“abc”) 名字叫abc的所有人 相当于 (name__exact="abc")

Student.objects.filter(name_iexact=“abc”) 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件

Student.objects.filter(name__contains="abc") # 名称中包含 "abc"的人 Student.objects.filter(name__icontains="abc") #名称中包含 "abc",且abc不区分大小写

Student.objects.filter(name__regex="^abc") # 正则表达式查询 Student.objects.filter(name__iregex="^abc")# 正则表达式不区分大小写

filter是找出满足条件的,当然也有排除符合某条件的

Student.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person对象 Student.objects.filter(name__contains="abc").exclude(age=23) # 找出名称含有abc, 但是排除年龄是23岁的

__gt 大于

__gte 大于等于

__lt 小于

__lte 小于等于

__in 存在于一个list范围内

__startswith 以…开头

__istartswith 以…开头 忽略大小写

__endswith 以…结尾

__iendswith 以…结尾,忽略大小写

__range 在…范围内

__year 日期字段的年份

__month 日期字段的月份

__day 日期字段的日

__isnull=True/False