对比分析Django的Q查询及AngularJS的Datatables分页插件

 更新时间:2017年02月07日 09:02:18   作者:飞哥ABC  
通过本文给大家对比分析了Django的Q查询及AngularJS的Datatables分页插件,非常不错,具有参考借鉴价值,需要的朋友可以参考下

使用Q查询,首先要导入Q模块:

from django.db.models import Q

可以组合使用&,|操作符用于多个Q的对象,产生一个新的Q对象,Q对象也可以用~操作符放在前面表示否定,如下例所示:

if search:
   keywords_list = search.split(' ')
   query_list = [Q(status__icontains=get_success_fail_status(keyword)) if get_success_fail_keyword_status(keyword) else
       Q(username__icontains=keyword) |
       Q(groupid__icontains=keyword) |
       Q(status_active_vs__icontains=keyword) |
       Q(orders_created_time__icontains=keyword) |
       Q(status_bind__icontains=keyword) |
       Q(status_active_Bind__icontains=keyword) |
       Q(env__icontains=keyword) for keyword in keywords_list]
   q = Q()
   for query in query_list:
    q.add(query, Q.AND) #把query添加到之前定义的最外层的Q对象中,查询条件是 '和'

其中Q查询里面的 __icontains 表示包含的关系,用于模糊查询,如:

Q(username__icontains=keyword) | Q(groupid__icontains=keyword) 表示查询 username或者 groupid

再谈谈AngularJS的Datatables分页插件:

Datatables的主要功能是分页、即时搜索和排序,虽然django自带的模板引擎也有分页功能(Paginator),但无论从功能上还是美观上,Datatables都更好。

Datatables的效果如下图所示:

下面讲一下Datatables的DTOptionsBuilder方法:

DTOptionsBuilder.newOptions是AngularJS的datatables的一个重要的方法,.newOptions用于实现前后端分页,

DTOptionsBuilder.newOptions()
 .withOption('ajax', {
  url: "/api/other/get_http_https_apply/",
  type: 'GET'
 })
 .withDataProp('data')
 .withOption('serverSide', true)
 .withPaginationType('full_numbers')
 .withOption('createdRow', createdRow)
 .withOption('order', [
  [0, 'desc']
 ]);

'serverSide', true 表示开启服务器模式,

ajax表示数据的来源(包括处理分页,排序,过滤),

full_numbers表示所有的数据,

http_https.dtColumns = [
  DTColumnBuilder.newColumn('id').withTitle('ID'),
  DTColumnBuilder.newColumn('username').withTitle('申请人'),
  DTColumnBuilder.newColumn('env').withTitle('环境'),
  DTColumnBuilder.newColumn('groupid').withTitle('group_id'),
  DTColumnBuilder.newColumn('status_active_vs').withTitle('激活vs').renderWith(apply_status),
  DTColumnBuilder.newColumn('status_bind').withTitle('绑定').renderWith(apply_status),
  DTColumnBuilder.newColumn('status_active_Bind').withTitle('激活绑定').renderWith(apply_status),
  DTColumnBuilder.newColumn('status').withTitle('最终结果').renderWith(apply_status),
  DTColumnBuilder.newColumn('orders_created_time').withTitle('时间')
 ];
 //判断是否是admin用户,如果是admin,则在http_https.dtColumns这个数组中增加(push)一个元素
 if (http_https.js_admin) {
  http_https.dtColumns.push(DTColumnBuilder.newColumn(null).renderWith(actionsHtml).withTitle('Actions'))
 }

DTColumnBuilder.newColumn表示新增表格的列

.renderWith对数据进行渲染  这里apply_status是我自己写的一个函数,用于转换json中True和False对应的html中的“成功、失败”

部分详情代码请见我的github:https://github.com/a342058040/Django_AngularJS_Datatables.git

以上所述是小编给大家介绍的对比分析Django的Q查询及AngularJS的Datatables分页插件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 基于require.js的使用(实例讲解)

    基于require.js的使用(实例讲解)

    下面小编就为大家带来一篇基于require.js的使用(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 在JavaScript中使用严格模式(Strict Mode)

    在JavaScript中使用严格模式(Strict Mode)

    这篇文章主要介绍了在JavaScript中使用严格模式(Strict Mode),除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。,需要的朋友可以参考下
    2019-06-06
  • 一行JavaScript代码如何实现瀑布流布局

    一行JavaScript代码如何实现瀑布流布局

    这篇文章主要给大家介绍了如何通过一行JavaScript代码实现瀑布流布局的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Elasticsearch实现复合查询高亮结果功能

    Elasticsearch实现复合查询高亮结果功能

    这篇文章主要介绍了Elasticsearch实现复合查询,高亮结果功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • JS仿Base.js实现的继承示例

    JS仿Base.js实现的继承示例

    这篇文章主要介绍了JS仿Base.js实现的继承,结合具体实例形式分析了javascript扩展操作及面向对象程序设计相关实现技巧,需要的朋友可以参考下
    2017-04-04
  • js中substring和substr两者区别和使用方法

    js中substring和substr两者区别和使用方法

    这篇文章主要介绍了js中substring和substr两者区别和使用方法,每一个步骤都有相应的文字介绍,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 前端渲染CSR和SSR的结合使用思路详解

    前端渲染CSR和SSR的结合使用思路详解

    以往的 SSR 方式有很多,都是人想出来的嘛,基本思路是让服务器提前渲染好然后等请求来的时候加渲染好的页面直接发给客户端浏览器,这篇文章主要介绍了前端渲染CSR和SSR的结合使用分析,需要的朋友可以参考下
    2022-12-12
  • 效果直逼flash的Div+Css+Js菜单

    效果直逼flash的Div+Css+Js菜单

    效果直逼flash的Div+Css+Js菜单...
    2007-05-05
  • javascript实现的LI列表输出,隔行同色的代码

    javascript实现的LI列表输出,隔行同色的代码

    javascript实现的LI列表输出,隔行同色的代码...
    2007-10-10
  • BootStrap表单控件之复选框checkbox和单选择按钮radio

    BootStrap表单控件之复选框checkbox和单选择按钮radio

    这篇文章主要介绍了BootStrap表单控件之复选框checkbox和单选择按钮radio的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论