django分页 所有问题处理结果...汗!搞了那么多天啊
来源:互联网 发布:毛笔字软件中文版 编辑:程序博客网 时间:2024/05/17 22:18
django分页 所有问题处理结果...汗!搞了那么多天啊
#-*-coding:utf-8-*-
"""
Google App Engine (GAE) 分页类
Usage:
query = User.gql('order by lastname')
pager = Paginator(query,url="/userlist/",pagesize=5)
results,pager = pager.fetch(offset)
"""
class Paginato(object):
def __init__(self,query=None,pagesize=20,url=None):
self.query = query
self.pagesize = pagesize
self.url = url
def fetch(self,offset):
results =self.query[offset:] ##results =self.query.fetch(300,offset)
本来这里是后便的代码,fetch在gae里的意思是取300个实例出来,但是要跳过0ffset个
换到django就是把所有的取出来 然后去offset之后的所有代码
output = self.create_links(offset,len(results))
return (results[:self.pagesize],output)
def create_links(self,offset,count):
num_links = 4 ##这个是空值页面最多显示的分页数
if count % self.pagesize ==0 :
num_pages = count/self.pagesize -1
else:
num_pages = count/self.pagesize
cur_page = offset/self.pagesize + 1
start_page = 1
end_page = cur_page + num_links
if cur_page - num_links >0:
start_page = cur_page - num_links + 1
if num_pages < num_links:
end_page = cur_page + num_pages
if end_page==1:
return ''
links = []
for i in range(start_page,end_page+1):
links_item = {}
links_item['index'] = i
links_item['offset'] = (i-1) * self.pagesize
links.append(links_item)
pagelinks = {}
pagelinks['item'] = links
pagelinks['cur_page'] = cur_page
if cur_page>1:
pagelinks['prev'] = offset - self.pagesize
else:
pagelinks['prev'] = None
if cur_page < end_page:
pagelinks['next'] = offset + self.pagesize
else:
pagelinks['next'] = None
output = '';
if pagelinks['prev'] is not None:
output += r'<a href="%s/offset/%s">上一页</a> ' % (self.url,pagelinks['prev'])
for i in pagelinks['item']:
if i['index'] != pagelinks['cur_page']:
output += r'<a href="%s/offset/%s">%s</a> ' % (self.url,i['offset'],i['index'])
else:
output += r' <a href="" style="color:#009193">%s</a> ' % (i['index'])
if pagelinks['next'] is not None:
output += r'<a href="%s/offset/%s">下一页</a> ' % (self.url,pagelinks['next'])
return output
### output = '';
if pagelinks['prev'] is not None:
output += '<a href="%s?offset=%s">上一页</a> ' % (self.url,pagelinks['prev'])
for i in pagelinks['item']:
if i['index'] != pagelinks['cur_page']:
output += '<a href="%s?offset=%s">%s</a> ' % (self.url,i['offset'],i['index'])
else:
output += ' <a href="" style="color:#009193">%s</a> ' % (i['index'])
if pagelinks['next'] is not None:
output += '<a href="%s?offset=%s">下一页</a> ' % (self.url,pagelinks['next'])
return output
这里的<a href="%s/offset/%s">,因为在前台点击的时候总是把=转码了,变成d35,所以我用斜杠把他们出别开,然后再url.py我是这么设置
匹配的,(r'^sub/(/d{1,10})/offset/(/d{1,10})$', views.hours_ahead),每一个括号其实就是views里的一个参数,所以我views是这么设
置的,因为(r'^sub/(/d{1,10})/$', views.hours_ahead),公用一个views视图,所以我视图中有个缺省参数,
def hours_ahead(request, subcateid,d=''):
id = int(subcateid)
infolist=Info.objects.filter(subcategory__id__exact=id).order_by('-date')
u ="/sub/"+subcateid
pager = Paginato(infolist,5,url=u) ##这里5是分5个
page = d ##这里本来我page=request.GET.get('offset'),这里是针对以前没改的pager.py里的url的,但是后来改了url所以参数直接传
到views里了
infos = {}
if page is '':
page = '0'
infos,pager = pager.fetch(int(page))
subcategorys = Subcategory.objects.filter(id=id)
t = get_template('infoList.html')
html = t.render(Context({'infoList': infos,'subcategory':subcategorys,'pager':pager,'page':page}))
return HttpResponse(html)
还有个问题 就是前台出现转码的问题 我最后用{{pager|safe}},告诉django这是不需要转码的 ,至于其他的方法我笔记里有
- django分页 所有问题处理结果...汗!搞了那么多天啊
- INFORMIX数据库PHP ODBC连接无法插入中文、查询中文的解决方案!!搞了三天啊!!
- django分页处理
- Django 数据分页处理
- 天啊呀了
- 失败了一天啊!
- 搞了一个晚上的django安装
- Django 处理模糊搜索结果
- lucene结果集的分页处理(百度 分页 方式)终于调试通过了。
- JQuery AJAX 分页,跳页下一页,上一页【总结了一天啊干货】
- 崩溃!下了那么多的作品,时间没了,积分没了,结果还没存!郁闷~~~~
- hadoop-hbase错误,搞了很久终于有结果了
- 天啊!!!!!!!!!
- 天啊
- 天啊
- django AlreadyRegistered问题处理
- ASP查询结果分页问题
- 写了那么多,郁闷
- 分享几本自己收藏的python书籍
- uva 10054
- 'utf8' codec can't decode bytes错误
- Django 分页的简单实现
- django的转义总结:escape,autoescape,safe,mark_safe
- django分页 所有问题处理结果...汗!搞了那么多天啊
- python 写的快速排序
- django的上传文件(比较复杂的一种)
- django配置apache model_python
- img1.51cto.com
- django的HttpResponseRedirect重定向 mysql保存文本的换行问题
- Visual Studio如何删除多余的空行
- Windows下PHP5和Apache的安装与配置
- django的文件 图片上传(简单方法)