def list_view(self, request, *args, **kwargs): if request.method == 'POST': action_name = request.POST.get('actions') action_dict = self.get_action_dict() if action_name not in action_dict: return HttpResponse('非法请求') response = getattr(self, action_name)(request) if response: return response # 处理搜索 search_list, keyword, con = self.search_condition(request) # ##### 处理分页 ##### from stark.utils.page import Pagination # 获取数据 origin_queryset = self.get_queryset(request, *args, **kwargs) queryset = origin_queryset.filter(con).filter( **self.get_list_filter_condition(request)).order_by( *self.get_order_by()).distinct() # 全部数据 total_set = queryset.count() # 携带参数 query_params = request.GET.copy() query_params._mutable = True # 请求的URL base_url = self.request.path page = Pagination(total_set, request.GET.get('page'), query_params, base_url, per_page=20) # 获取组合搜索筛选 list_filter = self.get_list_filter() try: # 搜索条件无法匹配到数据时可能会出现异常 queryset = queryset[page.start:page.end] except Exception as e: print(e) queryset = [] cl = ChangeList(self, queryset, keyword, search_list, page.page_html(), *args, **kwargs) context = {'cl': cl, 'extra': self.get_extra_content(*args, **kwargs)} return render( request, self.change_list_template or 'stark/new_change_list.html', context)
def list_view(self, request, *args, **kwargs): if request.method == 'POST': action_name = request.POST.get('actions') action_dict = self.get_action_dict() if action_name not in action_dict: return HttpResponse('非法请求') response = getattr(self, action_name)(request) if response: return response # 处理搜索 search_list, keyword, con = self.search_condition(request) # ##### 处理分页 ##### from stark.utils.page import Pagination # 全部数据 total_set = self.model_class.objects.filter(con).count() # 携带参数 query_params = request.GET.copy() query_params._mutable = True # 请求的URL base_url = self.request.path page = Pagination(total_set, request.GET.get('page'), query_params, base_url, per_page=10, max_show=3) # 获取组合搜索筛选 list_filter = self.get_list_filter() # 搜索条件无法匹配到数据时可能会出现异常 origin_queryset = self.get_queryset(request, *args, **kwargs) queryset = origin_queryset.filter(con).filter( **self.get_list_filter_condition()) if queryset: queryset = queryset.order_by( *self.get_order_by()).distinct()[page.start:page.end] cl = ChangeList(self, queryset, keyword, search_list, page.page_html(), *args, **kwargs) context = {'cl': cl, 'args': args, 'kwargs': kwargs} return render(request, self.change_list_template or 'stark/changelist.html', context)