class StartHandler(object):
..........
ordered_list = [] # 排序规则由 用户指定。 def get_ordered_list(self): return self.ordered_list or ["id", ] # 默认使用 id 进行排序
per_page = 10 # 默认每页显示,多少数据。 也可在子类中,自行定制 def check_list_view(self, request):# ##################4.获取排序###################### order_list = self.get_ordered_list() # 处理 从数据库 取到的数据 # 用户访问的表 self.model_class query_set = self.model_class.objects.all().order_by(*order_list) # 计算总数量,和 表格显示内容时,都需要,就提取出来了 # ###############处理分页################# '''1.根据用户访问页面,计算出索引的位置, 比如 page=3 2. 生成html页码 ''' all_count = query_set.count() query_params = request.GET.copy() # page=1&level=2 query_params._mutable = True # request.get中的值默认是不能被修改的。加上这句代码就可以修改了 pager = Pagination( current_page=request.GET.get("page"), # 用户访问的当前叶 all_count=all_count, # 数据库一共有多少数据 base_url=request.path_info, # 所在的url 就是 ?page=1 之前的URL # 用于保留,用户的请求信息,比如 level=2 被用户先选中。 那么分页后。因为查询的东西少了,分页也应该想要的减少, # 但是level=2这个, 请求的信息!不能因为。分页的原因。而减少。 query_params=query_params, per_page=self.per_page, # 每页显示多少数据。 )
...............
return render(request, "stark/changelist.html", {"header_list": header_list, "data_list": data_list, "body_list": body_list, "pager": pager, "add_btn": add_btn})
也可以在,自己的类中指定。 排序的方式。
class UserInfoHandler(StartHandler): # 自定制,展示页面, 需要展示的东西。 根据每张表的不同。 自己编写! list_display = [StartHandler.display_checkbox, "name", "age", "depart", get_choice_txt("班级", "classes"), get_choice_txt("性别", "gender"), StartHandler.display_edit, StartHandler.display_del] per_page = 10 # 自定制 每页显示 多少 数据 ordered_list = ["id"] # 自定制,用于排序的字段。 默认使用 id 正向排序。 可以自定制 ....................