stark组件之分页【模仿Django的admin】
我们的stark组件用的我们的分页组件,没有重新写

下面直接看下分页的代码
class page_helper():
def __init__(self, count, current_page, per_page_num, base_url,parms):
self.count = count
self.current_page = current_page
self.per_page_num = per_page_num
self.base_url = base_url
self.page_head = "<nav aria-label='Page navigation'><ul class='pagination'>"
self.page_tail = "</ul></nav>"
import copy
parms = copy.deepcopy(parms)
parms._mutable = True
self.parms = parms def page_count(self):
before, after = divmod(self.count, self.per_page_num)
if after > 0:
class_count = before + 1
else:
class_count = before
print("-------------",class_count,self.count,self.per_page_num)
return class_count def page_start(self):
if self.page_count() <= 11:
start_int = 1
end_int = self.page_count()
else:
if self.current_page <= 6:
start_int = 1
end_int = 11
elif self.current_page + 5 + 1 > self.page_count():
start_int = self.page_count() - 10
end_int = self.page_count() + 1
else:
start_int = self.current_page - 5
end_int = self.current_page + 5 + 1
return start_int def page_end(self):
if self.page_count() <= 11:
start_int = 1
end_int = self.page_count()
else:
if self.current_page <= 6:
start_int = 1
end_int = 11
elif self.current_page + 5 + 1 > self.page_count():
start_int = self.page_count() - 10
end_int = self.page_count() + 1
else:
start_int = self.current_page - 5
end_int = self.current_page + 5 + 1 return end_int def db_start(self):
return (self.current_page - 1) * self.per_page_num + 1 def db_end(self):
return self.current_page * self.per_page_num + 1 def page_list(self):
print(self.parms,dir(self.parms),"======================",self.parms.urlencode())
if self.current_page == 1:
before_page = "<li class='disable'><a href='#' aria-label='Previous'><span aria-hidden='true'>«</span></a></li>"
else:
self.parms["p"] = self.current_page - 1
before_page = "<li class='disable'><a href='{url}?{args}' aria-label='Previous'><span aria-hidden='true'>«</span></a></li>".format(url=self.base_url, args=self.parms.urlencode())
page_list = []
page_list.append(before_page) for i in range(self.page_start(), self.page_end() + 1):
self.parms["p"] = i
if i == self.current_page: s = """<li class="active"><a href="{url}?{args}">{num}</a></li>""".format(url=self.base_url, args=self.parms.urlencode(),num=self.parms["p"])
else:
s = """<li><a href="{url}?{args}">{num}</a></li>""".format(url=self.base_url, args=self.parms.urlencode(),num=self.parms["p"])
page_list.append(s)
if self.current_page == self.page_count():
after_page = """<li class='disable'><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a></li>"""
else:
self.parms["p"] = self.current_page + 1
after_page = """<li><a href="{url}?{args}" aria-label="Next"><span aria-hidden="true">»</span></a></li>""".format(url=self.base_url, args=self.parms.urlencode())
page_list.append(after_page)
page_body = "".join(page_list)
page_str = self.page_head + page_body + self.page_tail return page_str
分页的代码在什么实用用呢?应该list_url这个函数把过滤和搜索后的数据传递个showlist这个类,然后这个类在根据这些要显示的数据在进行分页
class Showlist(object):
def __init__(self,config,request,new_list,new_data_list):
self.config = config
self.request = request
self.new_list = new_list
self.new_data_list = new_data_list # 分页显示
count = self.new_data_list.count()
current_page = int(request.GET.get("p",1))
per_page_num = 3
base_url = request.path_info
parms = request.GET
self.page_str = page.page_helper(count=count,current_page=current_page,per_page_num=per_page_num,base_url=base_url,parms=parms)

stark组件之分页【模仿Django的admin】的更多相关文章
- stark组件之路由分发【模仿Django的admin】
一.先看下django的admin是如何进行路由分发的 1.先看下django的admin的url路径有哪些 其实很简单,假如有一个书籍表,那么每张表对应四个url,增.删.改.查 查看的url ht ...
- stark组件的分页,模糊查询,批量删除
1.分页组件高阶 2.整合展示数据showlist类 3.stark组件之分页 3.stark组件之search模糊查询 4.action批量处理数据 4.总结 1.分页组件高阶 1.分页的class ...
- stark组件之搜索【模仿Django的admin】
一.先看下django的admin是如何做搜索功能的 配置一个search_fields的列表就可以实现搜索的功能 class testbook(admin.ModelAdmin): # 第一步,定义 ...
- stark组件之pop操作【模仿Django的admin】
一.先看下什么django的admin的pop到底是个什么东西 其实就是这么一个东西, a.在添加页面,在一对多和多对多的项后加了一个+号 b.点击这个加号,会弹出对应的添加 页面,在新的添加 c.添 ...
- stark组件之批量操作【模仿Django的admin】
一.先看下django的admin是如何实现批量操作 首先在配置类中定义一个函数 然后我们为这个函数对象设置一个属性,这个属性主要用来显示在select标签中显示的文本内容 最后把函数对象放到一个ac ...
- stark组件之启动【模仿Django的admin】
首先需要在settings注册app INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib ...
- stark组件之注册【模仿Django的admin】
一.先看下django的admin是如何实现注册功能 首先导入admin这个对象和我们的model模块 from django.contrib import admin # Register your ...
- stark组件之过滤操作【模仿Django的admin】
一.先看下django的admin是如何实现过滤操作 首先在配置类中顶一个list_filter的列表,把要过滤的字段作为元素写i进去就可以了 class testbook(admin.ModelAd ...
- admin源码解析以及仿照admin设计stark组件
---恢复内容开始--- admin源码解析 一 启动:每个APP下的apps.py文件中. 首先执行每个APP下的admin.py 文件. def autodiscover(): autodisco ...
随机推荐
- UI5-学习篇-14-基于BSP应用部署Fiori Launchpad
1.UI5应用发布前端服务器 UI5-学习篇-10-本地UI5应用部署到SAP前端服务器 2.登录Fiori https://XXXXXX:50000/sap/bc/ui5_ui5/sap/arsrv ...
- angularjs 做不到实时脏值查询
angularjs 做不到脏值查询 ,数据请求过来,不操作其他按钮,请求的值就是展示不出来:(相当于,只有手动触发,angularjs内部才会把脏值查询出来): 解决办法:在请求过来的值旁边加上$sc ...
- MyBatis对入参对象的属性空判断
<!-- 查询学生list,like姓名 --> <select id="getStudentListLikeName" parameterType=&q ...
- SqlServer数据库碎片整理——BCC SHOWCONTIG
SQLServer提供了一个数据库命令——DBCC SHOWCONTIG——来确定一个指定的表或索引是否有碎片. 示例: DBCC SHOWCONTIG语法: 显示指定的表的数据和索引的碎片信息. ...
- ActiveX 控件
一.ActiveX基础 1.1什么是ActiveX ActiveX是COM规范的一种实现,前身是OLE(Object Linking and Embedding).一般读成:ActiveX Ctron ...
- kubectl windows
https://storage.googleapis.com/kubernetes-release/release/v1.10.3/bin/windows/amd64/kubectl.exe
- go语言指针判等
https://blog.csdn.net/qq_26981997/article/details/52608081
- flex-grow
[flex-grow] 指定宽度所占比,如一个flex中有三个item,这三个item的flex-grow均为1,则每个item占比为33.33%,如果一个是1,两个为2,则占比为20%,40%,40 ...
- Frame animation
[Frame animation] An animation defined in XML that shows a sequence of images in order (like a film) ...
- SVN获取最新代码,完成后续开发
1.新建一个文件夹,鼠标右键点击文件夹,点击Checkout 2.填写两个路径(项目路径和下载到路径),并确认“ok”