1 # -*- coding utf-8 -*-
2 # coding=utf-8
3
4 import tornado.web
5
6 """
7 模块化
8 """
9
10 LIST_INFO = [
11 {'username':'xiaobobo','email':'xiao@qq.com'},
12 ]
13
14 for i in range(99):
15 temp = {'username':'jialing'+str(i),'email':str(i)+'333@ww'}
16 LIST_INFO.append(temp)
17
18 class Pagination:
19 def __init__(self,current_page,all_item):
20 all_page, c = divmod(all_item, 5)
21 if c > 0:
22 all_page += 1
23 try:
24 current_page = int(current_page)
25 except:
26 current_page = 1
27 if current_page < 1:
28 current_page= 1
29
30 self.current_page = current_page
31 self.all_page = all_page
32 @property #以访问字段的方法去访问方法,即访问方法时不用括号后缀
33 def start(self):
34 return (self.current_page-1)*5
35 @property
36 def end(self):
37 return self.current_page*5
38 def page_str(self,base_url):
39 # 用来存储页码a标签的html代码
40 list_page = []
41 if self.all_page < 11:
42 s = 1
43 t = self.all_page
44 else:
45 if self.current_page <= 6:
46 s = 1
47 t = 11
48 else:
49 if (self.current_page + 5) >self.all_page:
50 s = self.all_page - 10
51 t = self.all_page
52 else:
53 s = self.current_page - 5
54 t = self.current_page + 5
55 # 首页
56 first_page = '<a href="%s1">首页</a>' % (base_url,)
57 list_page.append(first_page)
58
59 # 上一页
60 if self.current_page ==1:
61 # javascript:void(0):什么都不做
62 prev_page = '<a href="javascript:void(0);">上一页</a>'
63 else:
64 prev_page = '<a href="%s%s">上一页</a>' % (base_url,self.current_page-1)
65 list_page.append( prev_page)
66
67 # 中间的页码
68 for p in range(s, t + 1):
69 if p == self.current_page:
70 temp = '<a class="currtentP" href="%s%s">%s</a>' % (base_url,p, p)
71 else:
72 temp = '<a href="%s%s">%s</a>' % (base_url,p, p)
73 list_page.append(temp)
74
75 # 下一页
76 if self.current_page == self.all_page:
77 next_page = '<a href="javascript:void(0);">下一页</a>'
78 else:
79 next_page = '<a href="%s%s">下一页</a>' % (base_url, self.current_page + 1)
80 list_page.append(next_page)
81
82 # 尾页
83 last_page = '<a href="%s%s">尾页</a>' % (base_url,self.all_page)
84 list_page.append(last_page)
85
86 # 页面跳转
87 jump = """<input type='text' /><a onclick="Jump('%s',this);">GO</a>"""%(base_url,)
88 script = """<script>
89 function Jump(baseUrl,ths){
90 var val = ths.previousElementSibling.value;
91 if(val.trim().length>0){
92 location.href = baseUrl+val;
93 }
94 }
95 </script>
96 """
97 list_page.append(jump)
98 list_page.append(script)
99
100 str_page = ''.join(list_page)
101 return str_page
102 class IndexHandler(tornado.web.RequestHandler):
103 def get(self, page):
104 # 需要:当前页,总页数
105 # 输出:总页数
106 page_obj = Pagination(page,len(LIST_INFO))
107 # 当前页显示的元组内容范围
108 current_list = LIST_INFO[page_obj.start:page_obj.end]
109
110 str_page = page_obj.page_str('/index/')
111 self.render('home/index.html',list_info =current_list,current_page = page_obj.current_page,str_page = str_page)
112
113 def post(self, page): # index.html提交后把current_page 传给page
114 user = self.get_argument('username')
115 email = self.get_argument('email')
116 temp = {'username':user,'email':email}
117 LIST_INFO.append(temp)
118 self.redirect('/index/'+page)