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

作者:一只努力的程序猿@ 时间:2023-11-20 03:59:22 

常用

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

例子


{#格式   值|函数#}
{#    如果没有值,那么使用默认值#}
   <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、视图


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']

来源:https://blog.csdn.net/weixin_41449756/article/details/94869023

标签:django,filters,数据过滤
0
投稿

猜你喜欢

  • 小诀窍让你快速上手Dreamweaver

    2007-12-03 11:35:00
  • Python爬虫工程师面试问题总结

    2023-06-10 13:23:20
  • js中关于Blob对象的介绍与使用

    2024-04-18 09:49:00
  • Python实现银行账户资金交易管理系统

    2023-09-27 21:37:50
  • 用yum安装MySQLdb模块的步骤方法

    2024-01-12 18:23:25
  • Python闭包和装饰器用法实例详解

    2021-04-07 10:05:02
  • python版本的读写锁操作方法

    2023-04-29 05:18:57
  • Python中字符串格式化str.format的详细介绍

    2021-08-19 01:28:37
  • mysql存储过程基础之遍历多表记录后插入第三方表中详解

    2024-01-24 12:59:27
  • Python爬虫爬取煎蛋网图片代码实例

    2023-08-17 07:10:38
  • python 文本单词提取和词频统计的实例

    2022-10-25 04:53:03
  • asp如何做一个只能从本站点才能访问的页面?

    2010-07-12 19:00:00
  • pycharm中出现no module named xlwt的原因及解决

    2021-10-25 08:21:08
  • 在Django的URLconf中进行函数导入的方法

    2023-07-10 10:46:26
  • 定义列表: DL DT DD

    2009-05-06 13:08:00
  • Python+OpenCV图片局部区域像素值处理详解

    2023-10-26 12:59:22
  • ASP Application 对象用户手册

    2008-10-23 13:59:00
  • 利用 Python 实现多任务进程

    2023-12-19 02:53:52
  • Python编程入门之Hello World的三种实现方式

    2021-10-04 12:27:03
  • 解决matplotlib.pyplot在Jupyter notebook中不显示图像问题

    2022-03-03 14:55:10
  • asp之家 网络编程 m.aspxhome.com