我们的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】的更多相关文章

  1. stark组件之路由分发【模仿Django的admin】

    一.先看下django的admin是如何进行路由分发的 1.先看下django的admin的url路径有哪些 其实很简单,假如有一个书籍表,那么每张表对应四个url,增.删.改.查 查看的url ht ...

  2. stark组件的分页,模糊查询,批量删除

    1.分页组件高阶 2.整合展示数据showlist类 3.stark组件之分页 3.stark组件之search模糊查询 4.action批量处理数据 4.总结 1.分页组件高阶 1.分页的class ...

  3. stark组件之搜索【模仿Django的admin】

    一.先看下django的admin是如何做搜索功能的 配置一个search_fields的列表就可以实现搜索的功能 class testbook(admin.ModelAdmin): # 第一步,定义 ...

  4. stark组件之pop操作【模仿Django的admin】

    一.先看下什么django的admin的pop到底是个什么东西 其实就是这么一个东西, a.在添加页面,在一对多和多对多的项后加了一个+号 b.点击这个加号,会弹出对应的添加 页面,在新的添加 c.添 ...

  5. stark组件之批量操作【模仿Django的admin】

    一.先看下django的admin是如何实现批量操作 首先在配置类中定义一个函数 然后我们为这个函数对象设置一个属性,这个属性主要用来显示在select标签中显示的文本内容 最后把函数对象放到一个ac ...

  6. stark组件之启动【模仿Django的admin】

    首先需要在settings注册app INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib ...

  7. stark组件之注册【模仿Django的admin】

    一.先看下django的admin是如何实现注册功能 首先导入admin这个对象和我们的model模块 from django.contrib import admin # Register your ...

  8. stark组件之过滤操作【模仿Django的admin】

    一.先看下django的admin是如何实现过滤操作 首先在配置类中顶一个list_filter的列表,把要过滤的字段作为元素写i进去就可以了 class testbook(admin.ModelAd ...

  9. admin源码解析以及仿照admin设计stark组件

    ---恢复内容开始--- admin源码解析 一 启动:每个APP下的apps.py文件中. 首先执行每个APP下的admin.py 文件. def autodiscover(): autodisco ...

随机推荐

  1. 本地项目 共享 到github仓库

    一.安装git客户端 Window下安装Git客户端. 二.配置Intellij idea中的Git/ GitHub 选择Github,填写Host.Login和Password,然后Test是否成功 ...

  2. jsfl 常用自定义方法

    //创建文件夹 function creatFile(fileURl) { if (FLfile.createFolder(fileURl)) { //alert("创建成功 "+ ...

  3. Redis简单生产者消费者

    注意:redis客户端执行是单线程的,不能将客户端放在外面,内部执行使用多线程的方式. // 创建生产端连接 final Jedis jedisProducter = new Jedis(R_HOST ...

  4. Oracle函数使用

    数据格式化截取:  Trunc(data,[yyyy]) oracle的特有if判断: decode(sex, 0, '男', 1, '女') 分组排序:row_number() over(parti ...

  5. EventBus 源码学习

    打开一看,原来相关代码并不多,下面看下细节 主要方法也就是注册,取消注册和发送事件,可以看到两个主要的变量就是subscribers和dispatcher public void register(O ...

  6. js 监听浏览器刷新还是关闭事件 - 转

    监听页面关闭: window.onbeforeunload = function() { //鼠标相对于用户屏幕的水平位置 - 窗口左上角相对于屏幕左上角的水平位置 = 鼠标在当前窗口上的水平位置 v ...

  7. 23.week4

    调通了 剩下的就是核心的部分

  8. ubuntu16 安装openssh-server 一直安装不上Unable to correct problems, you have held broken packages

    zengqi@zengqi:~$ sudo apt-get install openssh-server Reading package lists... DoneBuilding dependenc ...

  9. Illegal access: this web application instance has been stopped already. could not load **

    启动tomcat的时候会报这样的错误: Illegal access: this web application instance has been stopped already.  could n ...

  10. workerman channel组件集群推送

    <?phpuse Workerman\Worker; require_once '../../web/Workerman/Autoloader.php';require_once '../../ ...