def display_table_objs(request, app_name, table_name): print("---->", app_name, table_name) # models_module = importlib.import_module('%s.models'%(app_name)) # model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] # object_list = admin_class.model.objects.all() object_list, filter_conditions = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) # print("orderby key",orderby_key) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') query_sets = paginator.get_page(page) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o", ''), "search_text": request.GET.get('_q', '') })
def display_table_objs(request,app_name,table_name): #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] #object_list = admin_class.model.objects.all() object_list,filter_condtions = table_filter(request,admin_class) object_list = table_search(request,admin_class,object_list) object_list,orderby_key = table_sort(request, admin_class, object_list) paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render(request,"king_admin/table_objs.html",{"admin_class":admin_class, "orderby_key":orderby_key, "query_sets":query_sets, "filter_condtions":filter_condtions, "orderby_key":orderby_key, "previous_orderby": request.GET.get("o",''), "search_text":request.GET.get('_q','')})
def display_table_obj(request, app_name, table_name): """通过反射获取class的各种属性""" # print(app_name, table_name) # 通过字符串反射动态导入模块 # importlib.import_module # importlib.import_module('crm') admin_class = king_admin.enabled_admins[app_name][table_name] # model_module = importlib.import_module('%s.models' % (app_name)) # model_obj = getattr(model_module, table_name) # print(model_obj) # object_list = admin_class.model.objects.all() object_list, filter_conditions = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_obj.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'search_value': request.GET.get('_q', '') })
def display_table(request,app_name,table_name): from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger # admin_class规定了显示的内容,并且还有model属性,所以将admin_class传入前端 admin_class = king_admin.enabled_admins[app_name][table_name] # <!--分页功能> # 得到表的对象的列表,因为 Paginator 第一个参数必须是可迭代的,第二个参数是每页展示的个数 # model_all = admin_class.model.objects.all() models_list,filter_conditions = utils.table_filter(request, admin_class) # 过滤后 models_list, search_key = utils.table_search(request, models_list, admin_class) # 搜索后 models_list, orderby_key = utils.table_sort(request, models_list) # 排序后 # 传入 list_per_page 作为每页的数据量,保证检索前与检索后展示相同的数据量 paginator = Paginator(models_list,admin_class.list_per_page) current_page = request.GET.get('page') try: # paginator.page()得到的是一页的对象列表,所以前端不用再对 # admin_class.model.objects.all()进行循环,而是循环posts posts = paginator.page(current_page) # 防止用户输入非法字符 except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) return render(request,'king_admin/table_obj.html',{'admin_class':admin_class, 'posts':posts, 'filter_conditions':filter_conditions, 'orderby_key':orderby_key, 'search_key':search_key, 'request':request})
def display_table_objs(request, app_name, model_name): # 模板中的传的两个参数在这里接收 admin_class = king_admin.enabled_admins[app_name][model_name] # objects = admin_class.model.objects.all() if request.method == 'POST': print(request.POST) admin_action = request.POST.get('action') selected_ids = request.POST.get('selected_ids') if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError('No object got selected!') if hasattr(admin_class, admin_action): action_func = getattr(admin_class, admin_action) request._admin_action = admin_action return action_func(admin_class, request, selected_objs) objects, filter_conditions = utils.table_filter(request, admin_class) objects = utils.table_search(request, admin_class, objects) objects, orderby_key = utils.table_sort(request, objects) paginator = Paginator(objects, king_admin.BaseAdmin.list_per_page) page = request.GET.get('page') query_sets = paginator.get_page(page) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'filter_conditions': filter_conditions, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o', ''), 'search_text': request.GET.get('_q', '') })
def display_table_objs(request, app_name, table_name): #传进来的CRM_test、userprofile # print("-->", app_name, table_name) admin_class = king_admin.enabled_admins[app_name][ table_name] #根据CRM_test、userprofile取到admin_class # contact_list = admin_class.model.objects.all() contact_list, filter_conditions = table_filter(request, admin_class) #过滤后的结果 contact_list = table_search(request, admin_class, contact_list) contact_list, orderby_key = table_sort(request, admin_class, contact_list) #排序后的结果 print(contact_list) paginator = Paginator( contact_list, admin_class.list_per_page) # Show list_per_page contacts per page page = request.GET.get('page') contacts = paginator.get_page(page) # print(admin_class.list_filters) return render( request, "king_admin/table_obj.html", { "admin_class": admin_class, "contacts": contacts, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "previous_orderby_page": request.GET.get("o", ''), "search_text": request.GET.get("_q", '') })
def display_table_objs(request,app_name,table_name): admin_class = king_admin.enabled_admins[app_name][table_name] object_list, filter_condtions = table_filter(request, admin_class)#做过滤 object_list = table_search(request,admin_class,object_list)#做搜索 object_list,orderby_key = table_sort(request,admin_class,object_list)#做排序 paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get("page") try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render(request, "king_admin/table_objs.html", {"admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "orderby_key":orderby_key, "previous_orderby":request.GET.get('o',''), "search_text":request.GET.get('_q',''),})
def display_table_objs(request, app_name, table_name): #1、 admin_class = king_admin.enabled_admins[app_name][table_name] #从king_admin里面的字典enabled_admins里面取 # object_list = admin_class.model.objects.all() if request.method == "POST": # 删除会有两次post,两次post都是新的post,所以每次post都应该带上选中的id和相应的动作 # 第一次是展示页面的form表单的post提交,即批量操作的action 来了,到delete页面,展示需要删哪些内容, # 点确认以后,再来一个POST,是删除页面的form表单的确认删除的post,才删除,删除后返回table展示页面 # print(request.POST) selected_ids = request.POST.get("selected_ids") # 拿到选中的id action = request.POST.get("action") # 拿到动作名称 if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action # 将这个action强制放到request里面去 return action_func(admin_class, request, selected_objs) # 跳转到执行动作的函数,即delete_selected_objs(),但返回的只是delete页面的内容!!! # 2、过滤字段 object_list, filter_conditions = table_filter(request, admin_class) # print('object_list',object_list) # print('filter_conditions',filter_conditions) #3、搜索 object_list = table_search(request, admin_class, object_list) #4、排序 object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 #5、分页 # 分页直接调用Django自带的Paginator #https://docs.djangoproject.com/en/1.10/topics/pagination/ paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: query_sets = paginator.page(1) #非整数时,返回第一页 except EmptyPage: query_sets = paginator.page(paginator.num_pages) #页数小于1或大于最大页数时,返回最大页 return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'filter_condtions': filter_conditions, 'search_text': request.GET.get("_q", ""), 'orderby_key': orderby_key, })
def display_table_objs(request, app_name, table_name): '''展示某一张表的数据''' # print("--->", app_name, table_name) # models_module = importlib.import_module('%s.models'%app_name) # import time # time.sleep(5) admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": # action 来了 print(request.POST) selected_ids = request.POST.get("selected_ids") if selected_ids: selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(",")) else: raise KeyError("No selected object id") print(selected_objs) action = request.POST.get("action") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action # 给king_admin 中的删除action return action_func(admin_class, request, selected_objs) return HttpResponse("action submit") # object_list = admin_class.model.objects.all() object_list, filer_condition = utils.table_filter(request, admin_class) # 获取过滤数据 object_list = utils.table_search(request, admin_class, object_list) object_list, orderby_key = utils.table_sort(request, admin_class, object_list) # 获取排序数据 paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') # 获取page number query_sets = paginator.get_page(page) # 同时具有querysets 和page 的方法 return render(request, "king_admin/table_objs.html", {'admin_class': admin_class, "query_sets": query_sets, "filer_condition": filer_condition, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o", ""), "search_text": request.GET.get("_q", ""), })
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] if request.method == "POST": #action 来了 print(request.POST) selected_ids = request.POST.get("selected_ids") action = request.POST.get("action") if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) #object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) #过滤后的结果 object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 print("orderby key ", orderby_key) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o", ''), "search_text": request.GET.get('_q', '') })
def display_table_objs(request, app_name, table_name): #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] #object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) search_objct_list = table_search(request, admin_class, object_list) sorted_object_list, order_by = table_sorted(request, search_objct_list) paginator = Paginator( sorted_object_list, admin_class.list_per_page) # Show 25 contacts per page if request.method == "POST": action_delete = request.POST.get("action_delete") if action_delete: objs_id_str = request.POST.get("objs_id_str") objs_id_list = objs_id_str.split(",") admin_class.model.objects.filter(id__in=objs_id_list).delete() return redirect("/king_admin/%s/%s" % (app_name, table_name)) selected_ids_str = request.POST.get("selected_ids_str") selected_ids_list = selected_ids_str.split(",") queryset = admin_class.model.objects.filter(id__in=selected_ids_list) selected_action_obj = request.POST.get("selected_action_obj") if hasattr(admin_class, selected_action_obj): action_func = getattr(admin_class, selected_action_obj) return action_func(admin_class, request, queryset) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "order_by": order_by, "previous_order_by": request.GET.get("o", ""), "search_key": request.GET.get("_q", "") })
def display_table_ajax(request): if request.method == 'GET': admin_class_detail = request.GET.get('admin_class_detail') admin_class_detail = eval(admin_class_detail) admin_class = king_admin.enabled_admins[admin_class_detail[0]][ admin_class_detail[1]] page = request.GET.get('page') object_list, filter_condtions = table_filter(request, admin_class) query_sets = paginator_class(object_list, admin_class, page) str_list = '' for obj in query_sets: str_list += '<tr>' str_list += build_table_row(obj, admin_class) str_list += '</tr>' return HttpResponse(mark_safe(str_list))
def display_table_objs(request, app_name, table_name): #print ('-------------->',app_name,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] # models_module = importlib.import_module('%s.model'%(app_name)) # model_obj = getattr(models_module,table_name) #object_list = admin_class.model.objects.all() object_list, filter_conditions = table_filter(request, admin_class) #过滤都得结果 object_list = table_seach(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per pag # def get_page(self, number): # """ # Return a valid page, even if the page argument isn't a number or isn't # in range. # """ # try: # number = self.validate_number(number) # except PageNotAnInteger: # number = 1 # except EmptyPage: # number = self.num_pages # return self.page(number) page = request.GET.get('page') query_sets = paginator.get_page(page) # try: # query_sets = paginator.get_page(page) # except PageNotAnInteger: # query_sets = paginator.get_page(1) # except EmptyPage: # query_sets = paginator.get_page(paginator.num_pages) #return render(request, 'list.html', {'contacts': contacts}) admin_class = king_admin.enabled_admins[app_name][table_name] return render( request, 'king_admin/table_objs.html', { "admin_class": admin_class, "query_sets": query_sets, 'filter_conditions': filter_conditions, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o') or '', "search_text": request.GET.get('_q', '') })
def display_table_objs(request, app, table): """ :param request: :return: """ admin_class = king_admin.enabled_admins[app][table] if request.method == "GET": model = admin_class.model object_list, filter_conditions = table_filter(request, admin_class) # 过滤 object_list, search_key = table_search(request, admin_class, object_list) order_key = "" object_list, order_key = table_sort(request, object_list) # 排序 paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # 不是int的值,显示第一页 query_sets = paginator.page(1) except EmptyPage: # 超过限制,显示最后一页 query_sets = paginator.page(paginator.num_pages) previous_order = request.GET.get('order', "") return render(request, 'king_admin/table_objs.html', locals()) elif request.method == "POST": # action selected_ids = request.POST.get("selected_ids", []) action = request.POST.get("action", None) if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("no object selected") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) else: pass
def display_table_objs(request, app_name, table_name): admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": #action select_ids = request.POST.get("selected_ids") action = request.POST.get("action") if select_ids: select_objs = admin_class.model.objects.filter( id__in=select_ids.split(',')) else: return redirect(("/king_admin/%s/%s/" % (app_name, table_name))) if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, select_objs) #!!!非常重要的三步 object_list, filter_conditions = table_filter(request, admin_class) #过滤 object_list = table_search(request, admin_class, object_list) #搜索 object_list, orderby_key = table_sort(request, admin_class, object_list) #排序 #分页功能 paginator = Paginator( object_list, admin_class.list_per_page) # Show 20 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "previous_key": request.GET.get("o", ''), "search_text": request.GET.get("search", ''), }, )
def display_table_objs(request, app_name, table_name): # model_module = importlib.import_module("%s.models"%(app_name)) # model_obj = getattr(model_module,table_name) #print(model_obj.__dict__) print("-->", app_name, table_name) admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": ids_list = request.POST.get("selected_ids").split(",") #print(ids_list) action = request.POST.get("action") querySets = admin_class.model.objects.filter( id__in=[int(id) for id in ids_list]) if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, querySets) object_list, filter_conditions = table_filter(request, admin_class) #过滤后的结果 object_list = table_search(request, admin_class, object_list) #关键字查询结果 object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的查询集 paginator = Paginator(object_list, admin_class.list_per_page) #获取分页对象 page = request.GET.get("page") #获取当前或者请求页面的页码 try: query_sets = paginator.page(page) #获取这一页被分配的数据 except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) #num_pages是总页数 return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "filter_conditions": filter_conditions, 'query_sets': query_sets, "orderby_key": orderby_key, "search_key": request.GET.get("_q", "") })
def display_table_objs(req,app_name,table_name): print('-->',app_name,table_name) print(type(app_name),type(table_name)) print(kingadmin.enabled_admins) #admin_class 根据这个类,获取显示条件 还操作.model下的数据 admin_class = kingadmin.enabled_admins[app_name][table_name] #action post请求 print(req.method) if req.method == "POST": print(req.POST) selected_ids = req.POST.get('selected_ids') action = req.POST.get('action') if selected_ids: selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(',')) else: raise KeyError('No object selected.') if hasattr(admin_class,action): action_func = getattr(admin_class,action) req._admin_action = action return action_func(admin_class(),req,selected_objs) # object_list = admin_class.model.objects.all() object_list,filter_condtions = table_filter(req,admin_class) #过滤数据 object_list = table_search(req,admin_class,object_list) #搜索查询 object_list,order_key = table_sort(req, object_list) #排序数据 paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = req.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: query_sets = paginator.page(1) except EmptyPage: query_sets = paginator.page(paginator.num_pages) print('enter filter') return render(req,'king_admin/table_objs.html',{'admin_class':admin_class, 'query_sets': query_sets, 'filter_condtions':filter_condtions, 'order_key':order_key, 'previous_order_key':req.GET.get('o',''), 'search_text':req.GET.get('_q','')})
def display_table_objs(request, app_name, table_name): # model_module = importlib.import_module('%s.models' %(app_name)) # model_obj = getattr(model_module, table_name) admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": selected_ids = request.POST.get('selected_ids') action = request.POST.get('action') if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class, action): request._admin_action = action action_func = getattr(admin_class, action) return action_func(admin_class, request, selected_objs) #object_list = admin_class.model.objects.all() object_list, filter_condition = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: query_sets = paginator.page(1) except EmptyPage: query_sets = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'filter_condition': filter_condition, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o', ''), 'search_text': request.GET.get('_q', ''), 'app_name': app_name, 'table_name': table_name })
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) admin_class = king_admin.enabled_admins[app_name][table_name] print(request.GET) object_list, filter_conditions = table_filter(request, admin_class) paginator = Paginator(object_list, admin_class.list_per_page) try: query_sets = paginator.page('page') except PageNotAnInteger: query_sets = paginator.page(1) except EmptyPage: query_sets = paginator.page(paginator.num_pages) return render(request, "king_admin/table_objs.html", {'admin_class': admin_class, 'query_sets': query_sets, 'filter_conditions': filter_conditions,})
def display_table_objs(request, app_name, table_name): admin_class = king_admin.enabled_admins[app_name][table_name] #post请求执行action操作 if request.method == 'POST': selected_ids = request.POST.get('selected_ids') action_name = request.POST.get('action') if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError('没有数据') if hasattr(admin_class, action_name): action_func = getattr(admin_class, action_name) request._action = action_name return action_func(admin_class, request, selected_objs) #有后端查询出结果集,并对其进行分页操作 object_list, filter_conditions = table_filter(request, admin_class) #搜索 object_list = table_search(request, admin_class, object_list) #先过滤,在排序 object_list, orderby_key = table_sort(request, object_list) paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: objects = paginator.page(page) except PageNotAnInteger: objects = paginator.page(1) except EmptyPage: objects = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': objects, 'filter_conditions': filter_conditions, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o') or '', 'search_text': request.GET.get('_q') or '' })
def table_contents(req, app_name, table_name): conf = {} table_admin = king_admin.enabled_admin[app_name][table_name] object_list, filter_conditions = utils.table_filter(req, table_admin) ##过滤后的结果 object_list, search_key = utils.search_for(req, object_list, table_admin) object_list, order_by = utils.table_sort(req, table_admin, object_list) ##排序后的结果 old_order_by = req.GET.get('o', '') # 记录当前排序状态 conf['order_by'] = order_by ##加负号或者去掉负号的过滤值 conf['old_order_by'] = old_order_by ###上一次的过滤值 conf['app'] = app_name conf['table'] = table_name conf['search_key'] = search_key ##搜索框保留值 # conf['current_url'] = req.path # print(req.path) paginator = Paginator(object_list, table_admin.list_per_page) page = req.GET.get('page') try: content_set = paginator.page(page) except PageNotAnInteger: content_set = paginator.page(1) except EmptyPage: content_set = paginator.page(paginator.num_pages) return render( req, 'king_admin/table_contents.html', { 'admin': table_admin, 'content_set': content_set, 'filter_conditions': filter_conditions, 'conf': conf, }, )
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] #object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) page = request.GET.get('page') query_sets = paginator_class(object_list, admin_class, page) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, 'app_name': app_name, 'table_name': table_name }, )
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) admin_class = king_admin.enabled_admins[app_name][table_name] object_list, filter_condtions = table_filter(request, admin_class) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions })
def display_table_obj(request, app_name, table_name): print('display--->', app_name, table_name) # model_module=importlib.import_module('%s.models'%app_name) # model_obj=getattr(model_module,table_name) admin_class = king_admin.enabled_admin[app_name][table_name] if request.method == 'POST': print(request.POST) print(request.POST.get('selected_ids')) print(request.POST.get('action')) print(request.POST.get('selected_obj')) selected_o = request.POST.get('selected_obj') selected_action = request.POST.get('action') selected_ids = request.POST.get('selected_ids') if selected_ids and selected_action: ids = selected_ids.split(',') selected_objs = admin_class.model.objects.filter(id__in=ids) # print(selected_objs) func = getattr(admin_class, selected_action) return func(admin_class, request, selected_objs) elif selected_o and selected_action: ids = selected_o.strip() ids = ids.split(' ') selected_objs = admin_class.model.objects.filter(id__in=ids) print(selected_objs) func = getattr(admin_class, selected_action) return func(admin_class, request, selected_objs) print('sadfsdfsd') else: print('------no selected or action') object_list, filter_condtions = table_filter(request, admin_class) # print('object________',admin_class.model.objects.all()) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 # print('2', object_list,filter_condtions) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'filter_condtions': filter_condtions, 'query_sets': query_sets, "previous_orderby": request.GET.get("o", ''), "orderby_key": orderby_key, "search_text": request.GET.get('_q', '') })
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enable_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] if request.method == "POST": print("操作 action", request.POST.get("action")) selected_ids = request.POST.get("selected_ids") if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(",")) else: raise KeyError("No object selected") action = request.POST.get("action") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) #object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, object_list) # print("object:",object_list) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') # print("PAGE:",page) try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) # print("views.filter_condtions:",filter_condtions) # print(222222222222222) # #print(list(query_sets)[0]) # # prn_obj(list(query_sets)[0]) # # print(query_sets.has_previous) # print("222222222222222222222222222222",query_sets.paginator.page_range,"333333333333333333333333333") return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o") or "", "search_q": request.GET.get("_q") or "", "selectdate": request.GET.get("date") or "" }, )
def table_index(request, app_name, table_name): admin_class = king_admin.enabled_admins[app_name][table_name] # 是models_class: 相应的表对象 models.UserProfile if request.method == "POST": #action(执行) 来了,取前端选取的数据 # print('--------------------',request.POST) selected_ids = request.POST.get("selected_ids") # 取选择中的数据id action = request.POST.get("action") # 取选中的操作执行函数 if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) # 取数据 else: raise KeyError("没有数据!") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action # ???????????????? return action_func(admin_class, request, selected_objs) # ?????????admin_class object_list, filter_conditions, all_key_value = table_filter( request, admin_class) # 在数据库中取数据并筛选 # filter_conditions是request.GET.items() 获取页面里的筛选的键值对 # 是object_list储存数据的列表(还没执行)admin_class.model.objects.filter(**filter_conditions) # all_key_value 前端页面的所有键值对 筛选条件 页码 排序 object_list = table_search(request, admin_class, object_list) # 搜索 object_list, order_key = table_order(request, object_list) # 排序 # 给取得的数据排序重新赋给object_list,order_key是返回前端在从前端传回后端判断用哪个字段排序,是正序还是倒序 paginator = Paginator(object_list, admin_class.list_per_page) # 分页 # 数据库中的总条数,和每页显示多少条, page = request.GET.get('page') # 从前端获取当前码数 page try: query_sets = paginator.page(page) # 根据索引number(页码 page),返回一个’Page’对象,如果不存在,引起 # InvalidPage异常 except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) # 当页面不存在或者无效时,会引起 # ``InvalidPage`` # 异常,一般这个异常就够用,如果需要更 # 详细信息,还有 # ``PageNotAnInteger``,``EmptyPage`` # filter_conditions,GET.items() 获取页面里的键值对组成的字段 可能是(page = 页码,跳页时) return render( request, "king_admin/table.html", { "admin_class": admin_class, # 是models_class: 相应的表对象 models.UserProfile "query_sets": query_sets, # 根据索引number(页码 page),返回一个’Page’对象, "filter_conditions": filter_conditions, # filter_conditions存有筛选的筛选条件(以键值对的形式) "all_key_value": all_key_value, # 前端页面的所有键值对 筛选条件 页码 排序 "order_key": order_key, }) # order_key是返回前端在从前端传回后端判断用哪个字段排序,是正序还是倒序
def display_table_objs(request,app_name,table_name): # print("-->",app_name,table_name) # models_module = importlib.import_module('%s.models' %(app_name)) # model_obj = getattr(models_module,table_name) # 获取自定义的admin_class admin_class = king_admin.enabled_admins[app_name][table_name] # admin_class = king_admin.enabled_admins[crm][userprofile] if request.method == 'POST': # action来了 # with open('1.html','at', encoding="utf-8") as f: # print(request.POST,file=f) # 获取提交的数据 selected_ids = request.POST.get("selected_ids") action = request.POST.get("action") # 后台判断 if selected_ids: selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class,action): action_func = getattr(admin_class,action) # 将action存储在请求体中便于调用 request._admin_action = action return action_func(admin_class,request,selected_objs) # 分页处理 # 1.分页对象参数构建:对象列表,每页显示数量 # query_set_list = admin_class.model.objects.all() # 此处顺序不可乱,搜索是在过滤的基础上建立的 # 排序又是在过滤和搜索的基础上建立的 # 延伸===》添加过滤条件 query_set_list, filter_conditions = utils.table_filter(request, admin_class) # 过滤后的结果 # 延伸===》添加搜索功能 query_set_list, search_text = utils.table_search(request, admin_class, query_set_list) # 延伸===》添加排序功能 query_set_list, order_by_text = utils.table_sort(request, admin_class, query_set_list) # 排序后的结果 # print('order_by_text', order_by_text) # 2.分页对象创建 paginator = Paginator(query_set_list, admin_class.list_per_page) # print('admin_class.list_per_page:', admin_class.list_per_page) # print(paginator.count) # print(paginator.num_pages) # print(paginator.page_range) # 3.获取前端点击的页面数值 get_page = request.GET.get('page',1) # get_page = int(request.GET.get('page',1)) # 4.页面异常处理 try: # 直接获取该页内容 query_set = paginator.page(get_page) except PageNotAnInteger: # 不是整数值,跳转到首页 query_set = paginator.page(1) except EmptyPage: # 超出范围,跳转到最后一页 query_set = paginator.page(paginator.num_pages) return render(request, 'king_admin/table_objs.html', {'admin_class': admin_class, 'query_set': query_set, 'filter_conditions': filter_conditions, 'search_text': search_text, # 'order_by_text':request.GET.get("o",''), 'order_by_text':order_by_text, })
def display_table_objs(request, app_name, table_name): """ 通用表格内容展示 """ # print(app_name, table_name) # import importlib # models_model = importlib.import_module('%s.models' % app_name) # model_obj = getattr(models_model, table_name) # 获取所有的列数据 admin_class = king_admin.enabled_admins[app_name][table_name] # from crm import models # print(col_obj.model.objects, models.UserProfile) # action 动作 if request.method == "POST": select_across = request.POST.get('select_across', None) post_flag = request.POST.get('_post', None) # 需要把 action 动作丢给 king_admin 来处理,包含返回的页面内容 # filter_id = admin_class[0] + '__in' if select_across: action = request.POST.get('action', None) # filter_dic = {filter_id: select_across.split(',')} recode_obj = admin_class.model.objects.filter(id__in=select_across.split(',')) if action: if hasattr(admin_class, action): action_func = getattr(admin_class, action) return action_func(admin_class, request, recode_obj) if post_flag: select_across = request.POST.get('_selected_action', None) action = request.POST.get('_action', None) if select_across: # filter_dic = {filter_id: select_across.split(',')} recode_obj = admin_class.model.objects.filter(id__in=select_across.split(',')) if action: if hasattr(admin_class, action): action_func = getattr(admin_class, action) return action_func(admin_class, request, recode_obj) # 动态过滤数据 object_list, filter_conditions, orderby_key, query_content = utils.table_filter(request, admin_class) # 排序数据, 这边需要修改成使用统一的数据源,现在无法对过滤后的数据进行排序 # object_list, orderby_key = utils.request_order_data(request, object_list) """ object_list: 查询出来的数据 filter_conditions: request.GET.items 的数据,动态查询的标签数据, 用于固定原来的选项 <option selected> 时使用的 """ """ page """ # 根据id来获取分页数据 page_num = admin_class.list_per_page # 需要与 tags.render_page_ele 里面的 page_num 相等, 每页显示的行数, 默认为20行 page = request.GET.get('page') # id_range = int(page) * page_num # count_pages = col_obj.model.objects.count() # query_sets = col_obj.model.objects.filter(id__gte=id_range).all()[:page_num] # 获取过滤数据后, 进行分页, 如果没有过滤条件,则返回所有数据 paginator = Paginator(object_list, page_num) # Show 1 contacts per page try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render(request, 'king_admin/table_objs.html', {"admin_class": admin_class, "contacts": contacts, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "query_content": query_content, "app_name": app_name})
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) # model_module = importlib.import_module('%s.models' % (app_name)) # model_obj = getattr(model_module, table_name) admin_class = king_admin.enabled_admin[app_name][table_name] # 获取数据的主入口 if request.method == "POST": # action来啦 selected_ids = request.POST.get("selected_ids") action = request.POST.get("action") if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: return redirect(request.path) if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) # object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) # 过滤后的结果 # request_url = '&' + str(filter_condtions).replace('\'', '').replace('{', '').replace('}', '').replace(':', '=') \ # .replace(',', '&').replace(' ', '') filter_url = request_url(request) object_list, search_key = table_search(request, admin_class, object_list) # 搜索的结果 object_list, orderby_key = table_sort(request, admin_class, object_list) # 排序后的结果 paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) from king_admin.king_admin import CustomerAdmin return render( request, "admin/table_obj.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "object_list_count": object_list.count(), "qq_search": admin_class.model._meta.object_name, "orderby_key": orderby_key, "previous_orderby": request.GET.get('o', ''), "search_key": search_key, "search_by": CustomerAdmin.search_fields, "filter_url": filter_url })