zoukankan      html  css  js  c++  java
  • 分页和过滤

    def listmedicine(request):
        try:
            # .order_by('-id') 表示按照 id字段的值 倒序排列
            # 这样可以保证最新的记录显示在最前面
            qs = Medicine.objects.values().order_by('-id')
    
            # 查看是否有 关键字 搜索 参数
            keywords = request.params.get('keywords',None)
            if keywords:
                conditions = [Q(name__contains=one) for one in keywords.split(' ') if one]
                query = Q()
                for condition in conditions:
                    query &= condition
                qs = qs.filter(query)
    
            # 要获取的第几页
            pagenum = request.params['pagenum']
    
            # 每页要显示多少条记录
            pagesize = request.params['pagesize']
    
            # 使用分页对象,设定每页多少条记录
            pgnt = Paginator(qs, pagesize)
    
            # 从数据库中读取数据,指定读取其中第几页
            page = pgnt.page(pagenum)
    
            # 将 QuerySet 对象 转化为 list 类型
            retlist = list(page)
    
            # total指定了 一共有多少数据
            return JsonResponse({'ret': 0, 'retlist': retlist,'total': pgnt.count})
    
        except EmptyPage:
            return JsonResponse({'ret': 0, 'retlist': [], 'total': 0})
    
        except:
            return JsonResponse({'ret': 2,  'msg': f'未知错误
    {traceback.format_exc()}'})
  • 相关阅读:
    模块化、结构化的代码,何尝不是在讲人生
    DOS操作文件或文件夹
    OSQL
    DOS 命令大全
    Red Tea
    SetInterval_1
    SetInterval
    分库分表——Sharding-Sphere
    线上redis热key问题
    线上redis bgsave导致服务响应延迟
  • 原文地址:https://www.cnblogs.com/litzhiai/p/14714014.html
Copyright © 2011-2022 走看看