Python之django filters数据过滤的解决办法
内容摘要
这篇文章主要为大家详细介绍了Python之django filters数据过滤的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的雯雯来看看吧!
常用
感兴趣的小伙伴,下面一起跟随php教程的雯雯来看看吧!
常用
文章正文
这篇文章主要为大家详细介绍了Python之django filters数据过滤的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的雯雯来看看吧!
常用
当前循环. | 作用 |
---|---|
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 22 23 24 | <code> {#格式 值|函数#} {# 如果没有值,那么使用默认值#} <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> </code> |
django filters实现数据过滤的示例代码
1、视图
代码如下:
1 2 3 4 5 6 7 8 | <code> class UserView(ListAPIView): "" "用户列表" "" queryset = User.objects.all() serializer_class = UserSerializer filter_backends = (DjangoFilterBackend,) filter_class = UserMonthFilter # 指定过滤类 </code> |
django filters实现数据过滤的示例代码
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 28 29 | <code> 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' ] </code> |
到此这篇关于django filters实现数据过滤的示例代码的文章就介绍到这了,更多相关django filters 数据过滤 内容请搜索php教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持php教程!
注:关于Python之django filters数据过滤的简单示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释