python中换页是干嘛的_Python之tornado框架实现翻页功能

1、结果如图所示,这里将html页面与网站的请求处理放在不同地方了

start.py代码

import tornado.ioloop

import tornado.web

from controllers import home

settings = {

'static_path':'statics',#静态文件配置,需要特殊处理

'static_url_prefix':'/sss/',#标记文件开始的名字

}

#路由映射,根据不同url对应到不同的类里面

application = tornado.web.Application([

(r"/index/(?P\d*)", home.IndexHandler),

],**settings)#基于正则的路由,?P表示为正则匹配到的内容起了一个名字

if __name__=='__main__':

application.listen(8888)

tornado.ioloop.IOLoop.instance().start()

home.py里面的代码

import tornado.web

List_Info=[

{'username':'jay','email':'810833835@qq.com'}

]

class IndexHandler(tornado.web.RequestHandler):

def get(self,page):

#每页显示五条数据

#page是当前页

#第一页: 0:5 List_Info[0:5]

#第二页:5:10

#start: (page-1)*5

#end: (page)*5

try:page=int(page)

except:page=1

print(page)

if page <1:

page =1

start = (page - 1)*5

end = page * 5

current_ist = List_Info[start:end]

self.render('E:\\练习2\\tornado_day2\\views\\home\\index.html',list= current_ist,page=page)

#E:\\练习2\\tornado_day2\\views\\home\\index.html

def post(self,page):

user = self.get_argument('username')

email = self.get_argument('email')

temp = {'username':user,'email':email}

List_Info.append(temp)

self.redirect('/index/'+page)

home文件里面的index.html代码

index首页

提交数据

显示数据

用户名邮箱

{% for line in list %}

{{line['username']}}{{line['email']}}

{% end %}

运行结果如图

最后我们修改一下home里面的代码,实现选择页面功能

import tornado.web

List_Info=[

{'username':'jay','email':'810833835@qq.com'}

]

for i in range(1000):

data = {'username': i, 'email': i * 2}

List_Info.append(data)

class IndexHandler(tornado.web.RequestHandler):

def get(self,page):

#每页显示五条数据

#page是当前页

#第一页: 0:5 List_Info[0:5]

#第二页:5:10

#start: (page-1)*5

#end: (page)*5

try:page=int(page)

except:page=1

if page <1:

page =1

start = (page - 1)*5

end = page * 5#每页最多显示五条数据

current_ist = List_Info[start:end]

all_page ,c = divmod(len(List_Info),5)#每五条数据一页,判断多少页

if c>0:#有余数则多一页

all_page +=1

list_page =[]

print(all_page)

if page <5:

for p in range(9):

if p+1 == page:

temp = '%s' % (p+1,p+1)

else:

temp = '%s' % (p + 1, p + 1)

list_page.append(temp)

elif page >all_page-5:#判断页数是否在最前或者最后五页

for p in range(all_page-9,all_page):

if p + 1 == page:

temp = '%s' % (p + 1, p + 1)

else:

temp = '%s' % (p + 1, p + 1)

list_page.append(temp)

else:

for p in range(page-5,page+4):

if p+1 == page:

temp = '%s' % (p+1,p+1)

else:

temp = '%s' % (p + 1, p + 1)

list_page.append(temp)

str_page = ''.join(list_page)

# str_page = list_page,不写join则会在页面上显示逗号

self.render('E:\\练习2\\tornado_day2\\views\\home\\index.html',list= current_ist,page=page,str_page=str_page)

#E:\\练习2\\tornado_day2\\views\\home\\index.html

def post(self, page):

user = self.get_argument('username')

email = self.get_argument('email')

temp = {'username':user,'email':email}

List_Info.append(temp)

self.redirect('/index/'+page)

print(List_Info)

对于index.html文件也要做少少修改

最后把home里面的代码封装一下,如图

import tornado.web

List_Info=[

{'username':'jay','email':'810833835@qq.com'}

]

for i in range(1000):

data = {'username': i, 'email': i * 2}

List_Info.append(data)#认为创建1000条数据

class Pagination:

def __init__(self,current_page,all_item):

all_page, c = divmod(len(all_item), 5) # 每五条数据一页,判断多少页

self.all_page=all_page

if c > 0: # 有余数则多一页

all_page += 1

self.all_page = all_page#获取最大页面

try:

current_page=int(current_page)

except:

current_page=1

if current_page <1:

current_page =1

self.current_page = current_page

@property

def strat(self):

return (self.current_page-1)*5

@property

def end(self):

return self.current_page * 5

def get_page(self,base_url):

self.all_page, c = divmod(len(List_Info), 5) # 每五条数据一页,判断多少页

if c > 0: # 有余数则多一页

self.all_page += 1

list_page = []

if self.current_page < 5:

for p in range(9):

if p + 1 == self.current_page:

temp = '%s' % (base_url,p + 1, p + 1)

else:

temp = '%s' % (base_url,p + 1, p + 1)

list_page.append(temp)

elif self.current_page > self.all_page - 5: # 判断页数是否在最前或者最后五页

for p in range(self.all_page - 9, self.all_page):

if p == self.current_page:

temp = '%s' % (base_url, p , p )

else:

temp = '%s' % (base_url, p, p )

list_page.append(temp)

else:

for p in range(self.current_page - 5, self.current_page + 4):

if p == self.current_page:

temp = '%s' % (base_url, p , p)

else:

temp = '%s' % (base_url, p , p )

list_page.append(temp)

str_page = ''.join(list_page)

return str_page

# str_page = list_page,不写join则会在页面上显示逗号

class IndexHandler(tornado.web.RequestHandler):

def get(self,page):

page_obj =Pagination(page,List_Info)#把当前访问页以及要传给前端的数据传给类里面

current_ist =List_Info[page_obj.strat:page_obj.end]#以访问字段的方式访问方法,获取数据

str_page = page_obj.get_page('/index/')#底下的页数码

self.render('E:\\练习2\\tornado_day2\\views\\home\\index.html',list= current_ist,page=page_obj.current_page,str_page=str_page)

#page_obj.current_page表示把处理过的页数传进去

def post(self, page):

user = self.get_argument('username')

email = self.get_argument('email')

temp = {'username':user,'email':email}

List_Info.append(temp)

self.redirect('/index/'+page)

print(List_Info)

运行如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值