源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-01-28 18:48 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:对比分析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
[b]再谈谈AngularJS的Datatables分页插件:[/b] Datatables的主要功能是分页、即时搜索和排序,虽然django自带的模板引擎也有分页功能(Paginator),但无论从功能上还是美观上,Datatables都更好。 Datatables的效果如下图所示: [img]http://files.jb51.net/file_images/article/201702/201702070905213.png[/img] [img]http://files.jb51.net/file_images/article/201702/201702070905214.png[/img] 下面讲一下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:[url=https://github.com/a342058040/Django_AngularJS_Datatables.git]https://github.com/a342058040/Django_AngularJS_Datatables.git[/url] 以上所述是小编给大家介绍的对比分析Django的Q查询及AngularJS的Datatables分页插件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程素材网网站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部