django filters实现数据过滤的示例代码
作者:一只努力的程序猿@ 时间:2023-11-20 03:59:22
常用
当前循环. | 作用 |
---|---|
default | 数据为空时设置默认值 |
length | 取变量长度 |
filesizeformat | 文件大小转成可读 |
slice | 从指定位置到指定位切片 |
date | datetime取到的时间,转成指定格式 |
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