django 分页 代码分享

#自定义分页


from app01 import models
from django.utils.safestring import mark_safe
def index(request,page):
try:
page=int(page)
except Exception,e:
page = 1
start = (page-1)*5
end = page*5
per_item = 5
count = models.Host.objects.all().count()
result = models.Host.objects.all()[start:end]
temp = divmod(count,per_item)
if temp[1] == 0:
all_page_count = temp[0]
else:
all_page_count = temp[0] + 1
page_html = []
first_html = "<a href='/index/%d'>首页</a>" %(1,)
page_html.append(first_html)
if page <= 1:
prev_html = '<a href='#'>上一页</a>'
else:
prev_html = '<a href='/index/%d'>上一页</a>'
page_html.append(prev_html)
begin = page -6
end = page + 5
if all_page_count < 11:
begin = 0
end = all_page_count
else:
if page < 6:
begin = 0
end = 11
else:
if page + 6 > all_page_count:
begin = page - 5
end = all_page_count
else:
begin = page -5
end = page + 6


//for i in range(all_page_count):
for i in range(begin,end):
if page == i+1:
a_html = "<a style='color:red' href='/index/%d'>%d</a>" %(i+1,i+1)
else:
a_html = "<a href='/index/%d'>%d</a>" %(i+1,i+1)
a_html = "<a href='/index/%d'>%d</a>" %(i+1,i+1)
page_html.append(a_html)
if page < 4:
next_html = "<a href='/index/%d'>下一页</a>" %(page+1,)
else:
next_html ="<a href='#'>下一页</a>"
page_html.append(next_html)
end_html = "<a href='/index/%d'>尾页</a>" %(all_page_count,)
page_html.append(end_html)
page = mark_safe(''.join(page_html))
ret = {'data':result,'count':count,'page':page} 
return render_to_response('index.html',ret)






<html>
<head>
<meta http-equiv='Content-Type' content='text/html';>
<title></title>
</head>
<body>
<h1>主机信息</h1>
<table border="1">
{% for item in data %}
<tr>
<td>{{ item.hostname }}</td>
<td>{{ item.ip }}</td>
</tr>
{% endfor %}
</table>
<div>总条数:{{count}}</div>
<div>
<a href='/index/1'>首页</a>
<a href='/index/1'>1</a>
<a href='/index/2'>2</a>
<a href='/index/3'>3</a>
<a href='/index/4'>4</a>
</div>
</body>
</html>




#urls.py
from django.contrib import admin
from django.urls import path ,include


urlpatterns = [
    path('index/(\d*)',include('app1.urls'))
]




#写一个处理异常的方法
def try_int(arg,default):
try:
arg = int(arg)
except Exception,e:
arg = default

return arg 

=========================================================

定义函数和类,用来简化上述代码:

class PageInfo:
def __init__(self,current_page,all_count,per_item):
self.CurrentPage = current_page
self.AllCount = all_count
self.PerItem = per_item
@property
def start(self):
return (self.CurrentPage - 1)*self.PerItem
@property
def end(self):
return (self.CurrentPage)*self.PerItem
@property
def all_page_count(self):


temp = divmod(self.AllCount,self.PerItem)
if temp[1] == 0:
all_page_count = temp[0]
else:
all_page_count = temp[0] + 1
return all_page_count


def pager(page,all_page_count):
page_html=[]
first_html = "<a href='/index/%d'>首页</a>" %(1,)
page_html.append(first_html)
if page <= 1:
prev_html = '<a href='#'>上一页</a>'
else:
prev_html = '<a href='/index/%d'>上一页</a>'
page_html.append(prev_html)
for i in range(all_page_count):
if page == i+1:
a_html = "<a style='color:red' href='/index/%d'>%d</a>" %(i+1,i+1)
else:
a_html = "<a href='/index/%d'>%d</a>" %(i+1,i+1)
a_html = "<a href='/index/%d'>%d</a>" %(i+1,i+1)
page_html.append(a_html)
if page < 4:
next_html = "<a href='/index/%d'>下一页</a>" %(page+1,)
else:
next_html ="<a href='#'>下一页</a>"
page_html.append(next_html)
end_html = "<a href='/index/%d'>尾页</a>" %(all_page_count,)
page_html.append(end_html)
page_string = mark_safe(''.join(page_html))
return page_string

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值