客户关系管理系统(三)
分页的bug修复
在king_admin.py中把 list_per_page = 2时,分页在点击下一页的时候会出现bug

点击下一页

出现的bug如下所示:
出现的bug原因是因为在前端中的a标签下一页中的链接是

把page=2当做查询的条件放到后端视图函数中进行查询了
解决的思路是,在a标签中加入过滤的条件filter_condition,然后后端查询的时候把page的的字段给过滤掉
在table_obj.html中把filter_condtions加入生成自定义标签中
{% render_page_ele loop_counter query_sets filter_condtions %}
在自定义标签tags.py中的 render_page_ele 中把过滤的条件filter_condtions当做参数循环遍历加入a标签中,红色的部分是新添加的内容

代码如下:
@register.simple_tag def render_page_ele(loop_counter, query_sets, filter_condtions): filters = '' for k, v in filter_condtions.items(): filters += "&%s=%s" % (k, v) # query_sets.number 当前的页数 if abs(query_sets.number - loop_counter) <= 2: ele_class = "" if query_sets.number == loop_counter: ele_class = "active" ele = '''<li class="%s"><a href="?page=%s%s">%s</a></li>''' %(ele_class,loop_counter,filters,loop_counter) return mark_safe(ele) return ''
还需要做的一步就是在后端中把page的字段给过滤掉
修改utils.py中table_filter函数,如果出现page字段就给过滤掉

完整代码如下:
def table_filter(request,admin_class): '''进行条件过滤并返回过滤后的数据''' filter_conditions = {} for k,v in request.GET.items(): if k=='page': continue if v: filter_conditions[k] =v print(filter_conditions) return admin_class.model.objects.filter(**filter_conditions),filter_conditions
这时点击第2页就不会出错了

点击下一页还是会报同样的上述错误。
加入总共查询到多少条数据,在 table_obj.html中的tbody上加入以下的代码
<tfoot> <tr> <td>总计{{ query_sets.paginator.count }}条</td></tr> </tfoot>
刷新页面如下


浙公网安备 33010602011771号