gpt4 book ai didi

django filters实现数据过滤的示例代码

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章django filters实现数据过滤的示例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

常用

  。

当前循环. 作用
default 数据为空时设置默认值
length 取变量长度
filesizeformat 文件大小转成可读
slice 从指定位置到指定位切片
date datetime取到的时间,转成指定格式
safe 防止XSS攻击、加上safe才能传标签
truncatechars 取摘显示一段剩下的…

  。

例子 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{ #格式   值|函数#}
{ #    如果没有值,那么使用默认值#}
     <p>{{ bucunzai|default: '空的哦' }}< / p>
 
{ #    取出变量长度#}
     <q>{{ name }} - - {{ name|length }}< / q>
 
{ #      文件大小转换成可读型  kb 自动转成bm、g、tb#}
     <p>文件大小{{ file_size|filesizeformat }}< / p>
 
{ #    切片 从指定位置到指定位 ,例:第3位到-2位#}
     <p>切片:{{ slice_str| slice : '3:-2' }}< / p>
 
{ #    把datetime取到的时间,转成指定格式#}
     <p>格式化:{{ now|date: 'Y-m-d H:i:s' }}< / p>
 
{ #    如果后端内容包含标签,那么加上safe 才能转义(防止用户直接加script标签作弊)防XSS攻击#}
     <p>{{ h_html|safe }}< / p>
 
{ #    取摘要只显示一段,指定取长度后面...例:120个字符 #}
     <p>长文本:{{ p_str|truncatechars: 12 }}< / p>

1、视图 。

?
1
2
3
4
5
6
class UserView(ListAPIView):
     """用户列表"""
     queryset = User.objects. all ()
     serializer_class = UserSerializer
     filter_backends = (DjangoFilterBackend,)
     filter_class = UserMonthFilter  # 指定过滤类

2、过滤类 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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' ]

到此这篇关于django filters实现数据过滤的示例代码的文章就介绍到这了,更多相关django filters 数据过滤 内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/weixin_41449756/article/details/94869023 。

最后此篇关于django filters实现数据过滤的示例代码的文章就讲到这里了,如果你想了解更多关于django filters实现数据过滤的示例代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com