django filters實(shí)現(xiàn)數(shù)據(jù)過濾的示例代碼
常用
| 當(dāng)前循環(huán). | 作用 |
|---|---|
| default | 數(shù)據(jù)為空時設(shè)置默認(rèn)值 |
| length | 取變量長度 |
| filesizeformat | 文件大小轉(zhuǎn)成可讀 |
| slice | 從指定位置到指定位切片 |
| date | datetime取到的時間,轉(zhuǎn)成指定格式 |
| safe | 防止XSS攻擊、加上safe才能傳標(biāo)簽 |
| truncatechars | 取摘顯示一段剩下的… |
例子
{#格式 值|函數(shù)#}
{# 如果沒有值,那么使用默認(rèn)值#}
<p>{{ bucunzai|default:'空的哦' }}</p>
{# 取出變量長度#}
<q>{{ name }}--{{ name|length }}</q>
{# 文件大小轉(zhuǎn)換成可讀型 kb 自動轉(zhuǎn)成bm、g、tb#}
<p>文件大小{{ file_size|filesizeformat }}</p>
{# 切片 從指定位置到指定位 ,例:第3位到-2位#}
<p>切片:{{ slice_str|slice:'3:-2' }}</p>
{# 把datetime取到的時間,轉(zhuǎn)成指定格式#}
<p>格式化:{{ now|date:'Y-m-d H:i:s' }}</p>
{# 如果后端內(nèi)容包含標(biāo)簽,那么加上safe 才能轉(zhuǎn)義(防止用戶直接加script標(biāo)簽作弊)防XSS攻擊#}
<p>{{ h_html|safe }}</p>
{# 取摘要只顯示一段,指定取長度后面...例:120個字符 #}
<p>長文本:{{ p_str|truncatechars:12 }}</p>
1、視圖
class UserView(ListAPIView):
"""用戶列表"""
queryset = User.objects.all()
serializer_class = UserSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = UserMonthFilter # 指定過濾類
2、過濾類
class RobotFilter(django_filters.FilterSet):
# 使用過濾:URL?created_start_time=2020_01-20&created_end_time=2020_01-21
robot_id = django_filters.CharFilter(field_name='id')
machine_id = django_filters.CharFilter(field_name='machine_id')
city = django_filters.CharFilter(field_name='city')
# lookup_expr(可選)為判斷條件,field_name(必選)為模型類屬性,created_time查詢字符串
created_time= django_filters.CharFilter(field_name='created_at', lookup_expr='startswith')
created_start_time = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='gt')
created_end_time = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='lt')
problem_isnull = django_filters.BooleanFilter(field_name='problem', lookup_expr='isnull')
name = django_filters.CharFilter(lookup_expr='iexact') # iexact表示精確匹配, 并且忽略大小寫
author = django_filters.CharFilter(lookup_expr='icontains') #icontains表示模糊查詢(包含),并且忽略大小寫
price = django_filters.NumberFilter(look_expr='exact') #exact表示精確匹配
task_res_state = django_filters.CharFilter(method="get_task_res_state")
def get_task_res_state(self, queryset, *arg):
if str(arg[1]) == "0": # arg[1]=('task_res_state', '0')
task_res = (1, 2, 3)
else:
task_res = (0, 4, 5, 6)
print(task_res)
queryset = queryset.filter(task_res__in=task_res)
return queryset
class Meta:
model = Robot
fields = ['robot_id', 'machine_id', "city", "created_start_time", "created_end_time", 'created_time',
'firmware_version', 'state', "robot_type", "hardware_version", "exist_map", 'task_res_state']
到此這篇關(guān)于django filters實(shí)現(xiàn)數(shù)據(jù)過濾的示例代碼的文章就介紹到這了,更多相關(guān)django filters 數(shù)據(jù)過濾 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python讀寫鎖實(shí)現(xiàn)實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Python讀寫鎖實(shí)現(xiàn)實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
Python基于pandas繪制散點(diǎn)圖矩陣代碼實(shí)例
這篇文章主要介紹了Python基于pandas繪制散點(diǎn)圖矩陣代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
python 實(shí)用工具狀態(tài)機(jī)transitions
這篇文章主要介紹了python 實(shí)用工具狀態(tài)機(jī)transitions的使用,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11
深入理解python虛擬機(jī)如何實(shí)現(xiàn)閉包
當(dāng)能夠從設(shè)計(jì)者的層面去理解閉包就再也不用死記硬背一些閉包的概念了,所以本文就來從虛擬機(jī)層面和大家一起討論函數(shù)閉包是如何實(shí)現(xiàn)的2023-10-10
Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享前篇
這篇文章主要為大家介紹了Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享前篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python實(shí)現(xiàn)從URL地址提取文件名的方法
這篇文章主要介紹了Python實(shí)現(xiàn)從URL地址提取文件名的方法,涉及OS模塊中basename方法的使用技巧,需要的朋友可以參考下2015-05-05
PyTorch中torch.save()的用法和應(yīng)用小結(jié)
本文主要介紹了PyTorch中torch.save()的用法和應(yīng)用小結(jié),torch.save()的主要作用就是將PyTorch對象保存到磁盤上,下面就來具體介紹一下,感興趣的可以了解一下2024-03-03
python 三種方法實(shí)現(xiàn)對Excel表格的讀寫
這篇文章主要介紹了python 三種方法實(shí)現(xiàn)對Excel表格的讀寫,幫助大家更好的利用python處理表格,感興趣的朋友可以了解下2020-11-11

