7.Djnago過濾器總結

Alpaca_發表於2018-05-16

文章僅供學習,錯誤歡迎提出

小寫 {{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

相關文章