django 分页
django 分页,urls
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ #url(r'^admin/', admin.site.urls), url(r'^index/(\d*)/', views.index), ]
views
#!/usr/bin/env python #_*_coding:utf-8_*_ from django.shortcuts import render,render_to_response,redirect,HttpResponse from app01 import models from django.utils.safestring import mark_safe import common # Create your views here. def index(request,page): pageint = 5 page = common.try_int(page) startpage = (page-1) * pageint #根据url传过来的参数判断开始条数 endpage = page * pageint #根据url传过来的参数判断结束条数 hostall = models.Host.objects.all()[startpage:endpage] #一页显示的条数 hostcount= models.Host.objects.all().count() #获取数据库的总共条数 #判断总页数,如果能整除5,页数不加一, 不过不能整除5,需要加一 tempcountpage = divmod(hostcount,pageint) if tempcountpage[1] == 0: all_page_count = tempcountpage[0] else: all_page_count = tempcountpage[0] +1 #定义一个列表,然后循环总页数,追加到列表中, page_html = [] #首页 first_page = '<a href="/index/%d">首页</a>'%(1) page_html.append(first_page) #上一页 if page <= 1: up_page = '<a href="/index/%d">上一页</a>'%(1) else: up_page = '<a href="/index/%d">上一页</a>'%(page - 1) page_html.append(up_page) #显示1。。。最后的页数 for i in range(all_page_count): if page == i +1: temp_html = '<a class="selected" href="/index/%d">[%d]</a>'%(i+1,i+1) else: temp_html = '<a href="/index/%d">[%d]</a>'%(i+1,i+1) page_html.append(temp_html) #下一页 if page >= all_page_count: next_page = '<a href="/index/%d">[下一页]</a>' % (all_page_count) else: next_page = '<a href="/index/%d">[下一页]</a>'%(page + 1) page_html.append(next_page) # 尾页 end_page = '<a href="/index/%d">[尾页]</a>' %(all_page_count) page_html.append(end_page) # 使用mark_safe 可让html显示返回的a标签。join 把列表取出用空格连接 page_html = mark_safe(' '.join(page_html)) ret = {'data':hostall,'count':hostcount,'page_ret':page_html} return render_to_response('index.html',ret)
html,index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body { font-size: .85em; font-family:"Trebuchet MS",Verdana,Helvetica,"Sakkal Majalla"; color: #232323; background-color: #ffffff; } #Pageing A{ background-color:aliceblue; border: 1px solid white; text-decoration: none; color:black; padding: .1em .6em .2em .6em;} #Pageing A.selected{ background-color: #AA7700; } </style> </head> <body> <table border="1px"> <tr> <td>HostName</td> <td>IP</td> </tr> {% for item in data %} <tr> <td>{{ item.HostName }}</td> <td>{{ item.ip }}</td> </tr> {% endfor %} </table> <div style="color: black;font-size: medium"> 共计{{ count }}条数据</div> <div id="Pageing"> {{ page_ret }}</div> </body> </html>
modles.py
from __future__ import unicode_literals from django.db import models # Create your models here. class Host(models.Model): HostName = models.CharField(max_length=256) ip = models.GenericIPAddressField()