不带每页内容数量选择
django视图模块
class Page(object): def __init__(self,current_page,data_count,per_page_count=10,page_num = 7): self.current_page=current_page self.data_count = data_count self.per_page_count = per_page_count self.page_num = page_num def start(self): return (self.current_page -1)*self.per_page_count def end(self): return self.current_page*self.per_page_count @property def total_page(self): count, yu = divmod(len(li), self.per_page_count) if yu: count = count + 1 return count def page_str(self): page_list = [] if self.total_page < self.page_num: start_index = 1 end_index = self.total_page + 1 else: if self.current_page <= (self.page_num + 1) / 2: start_index = 1 end_index = self.page_num + 1 else: start_index = self.current_page - (self.page_num) / 2 end_index = self.current_page + (self.page_num + 1) / 2 if (self.current_page + (self.page_num - 1) / 2) > self.total_page: end_index = self.total_page start_index = self.total_page -self.page_num + 1 if self.current_page == 1: prev = '''<a class='active' href="javascript:void(0);">上一页</a>''' else: prev = '''<a class='active' href="/user_list/?p=%s">上一页</a>''' % (self.current_page - 1) page_list.append(prev) for i in range(int(start_index), int(end_index) + 1): if i == self.current_page: temp = '''<a class='active' href="/user_list/?p=%s">%s</a>''' % (i, i) else: temp = '''<a class='normal' href="/user_list/?p=%s">%s</a>''' % (i, i) page_list.append(temp) if self.current_page == self.total_page: prev = '''<a class='active' href="javascript:void(0);">下一页</a>''' else: prev = '''<a class='active' href="/user_list/?p=%s">下一页</a>''' % (self.current_page + 1) page_list.append(prev) jump = """ <input type='text' id="i2"/><a id='i1' onclick='jumpTo(this,"/user_list/?p=");'>GO</a> <script> function jumpTo(ths,base){ var val = ths.previousSibling.value; location.href = base + val; } </script> """ page_list.append(jump) page_list = ''.join(page_list) return page_list li = [] for i in range(98): li.append(i) def user_list(request): current_page = request.GET.get('p',1) current_page=int(current_page) page_obj = Page(current_page,len(li)) data = li[page_obj.start():page_obj.end()] return render(request,'user_list.html',{'li':data,'page':mark_safe(page_obj.page_str())})
user_list.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .active{ padding: 3px; margin: 10px; background-color: #28bfba; } .normal{ padding: 3px; margin: 10px; background-color: #ebebeb; } </style> </head> <body> <ul> {% for item in li %} {% include 'li.html' %} {% endfor %} </ul> <div> {{ page }} </div> </body> </html>
li.html
<li>{{ item }}</li>
利用cookie做每页内容数量选择
视图函数
class Page(object): def __init__(self,current_page,data_count,per_page_count=10,page_num = 7): self.current_page=current_page self.data_count = data_count self.per_page_count = per_page_count self.page_num = page_num def start(self): return (self.current_page -1)*self.per_page_count def end(self): return self.current_page*self.per_page_count @property def total_page(self): count, yu = divmod(len(li), self.per_page_count) if yu: count = count + 1 return count def page_str(self): page_list = [] if self.total_page < self.page_num: start_index = 1 end_index = self.total_page + 1 else: if self.current_page <= (self.page_num + 1) / 2: start_index = 1 end_index = self.page_num + 1 else: start_index = self.current_page - (self.page_num) / 2 end_index = self.current_page + (self.page_num + 1) / 2 if (self.current_page + (self.page_num - 1) / 2) > self.total_page: end_index = self.total_page start_index = self.total_page -self.page_num + 1 if self.current_page == 1: prev = '''<a class='active' href="javascript:void(0);">上一页</a>''' else: prev = '''<a class='active' href="/user_list/?p=%s">上一页</a>''' % (self.current_page - 1) page_list.append(prev) for i in range(int(start_index), int(end_index) + 1): if i == self.current_page: temp = '''<a class='active' href="/user_list/?p=%s">%s</a>''' % (i, i) else: temp = '''<a class='normal' href="/user_list/?p=%s">%s</a>''' % (i, i) page_list.append(temp) if self.current_page == self.total_page: prev = '''<a class='active' href="javascript:void(0);">下一页</a>''' else: prev = '''<a class='active' href="/user_list/?p=%s">下一页</a>''' % (self.current_page + 1) page_list.append(prev) jump = """ <input type='text' id="i2"/><a id='i1' onclick='jumpTo(this,"/user_list/?p=");'>GO</a> <script> function jumpTo(ths,base){ var val = ths.previousSibling.value; location.href = base + val; } </script> """ page_list.append(jump) page_list = ''.join(page_list) return page_list li = [] for i in range(98): li.append(i) def user_list(request): current_page = request.GET.get('p',1) current_page=int(current_page) val = request.COOKIES.get('pgcount',10) print(val) val=int(val) page_obj = Page(current_page,len(li),val) data = li[page_obj.start():page_obj.end()] return render(request,'user_list.html',{'li':data,'page':mark_safe(page_obj.page_str())})
user_list.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .active{ padding: 3px; margin: 10px; background-color: #28bfba; } .normal{ padding: 3px; margin: 10px; background-color: #ebebeb; } </style> </head> <body> <ul> {% for item in li %} {% include 'li.html' %} {% endfor %} </ul> <select id="i1" onchange="changePage(this)"> <option value="10">10</option> <option value="30">30</option> <option value="50">50</option> </select> <div> {{ page }} </div> <script src="/static/jquery-1.12.4.js"></script> <script src="/static/jquery.cookie.js"></script> <script> $(function () { var val = $.cookie('pgcount'); $('#i1').val(val); }); function changePage(ths) { var val =$(ths).val(); console.log(val); $.cookie('pgcount',val); location.reload(); } </script> </body> </html>
li.html
<li>{{ item }}</li>

浙公网安备 33010602011771号