Django学习笔记(15)实现模糊查询和精确查询

Django后端实现模块查询和精确查询

views.py

 1 from django.db.models import Q
 2 from django.forms import model_to_dict
 3 from django.http import JsonResponse
 4 from django.core.paginator import Paginator
 5 from django.views import View
 6 
 7 class CaseView(View):
 8     def get(self,request):
 9         limit = request.GET.get('limit',20)#分页,获取每页xxx条
10         page = request.GET.get('page',1)#分页,获取第xxx页
11         search = request.GET.get('search')#模糊搜索关键字
12         filter_field = ['id','title','method']#关键字精确查询,通过哪些字段查询
13         filter_dict = {}  #{id:1,title:xxx,method:2}
14         for field in filter_field:
15             value = request.GET.get(field)
16             if value:
17                 filter_dict[field] = value
18         if filter_dict:
19             case_sets = models.Case.objects.filter(**filter_dict)
20         elif search:#模糊查询
21             case_sets = models.Case.objects.filter(Q(title__contains=search) |
22                                    Q(desc__contains=search) |
23                                    Q(url__contains=search) |
24                                    Q(params__contains=search))#模糊查询
25         else:
26             case_sets = models.Case.objects.filter(is_delete=False)#查询所有
27 
28         paginator = Paginator(case_sets,limit) #分页,获取分页对象
29         page_data = paginator.page(page)  #分页,获取分页数据,返回的是model对象
30 
31         data = []
32         for c in page_data:#分页字典拼接成list
33             d = model_to_dict(c)
34             data.append(d)
35         response = {'code': 0, 'msg': '添加成功', 'data': data,'count':paginator.count}
36         return JsonResponse(response, json_dumps_params={'ensure_ascii': False})  # 汉字不转义

猜你喜欢

转载自www.cnblogs.com/bugoobird/p/13371187.html
今日推荐