django 简单分页

初学django分页, 变量名写的太随意见谅. 

1 view.py
 2
 3 def Index(request,page):
 4     page = common(page,1)
 5     pageDataCount = 20
 6     #data
 7     data = models.Host.objects.all()
 8     #传入数据量,当前页码数,每页显示多少条数据
 9     ret = Pager(data,page,pageDataCount)
10     return render_to_response(‘day13/index.html‘,ret)
html_helper.py
from django.utils.safestring import mark_safe
import math
def html_div():
    div = ‘‘‘
        <div>
                <a href="/day13/index/1">首页</a>
                <a>&nbsp;</a>
                <a>当前页第 {} 页 </a>
                <a>&nbsp;</a>
                <a href="/day13/index/{}">上一页</a>
                <a>&nbsp;</a>
                <a href="/day13/index/{}">下一页</a>
                <a> &nbsp; 共{} 页</a>
                <a> &nbsp;每页显示 {}条</a>
                <a> &nbsp;  总条数为 {} 条 &nbsp;</a>
                <a href="/day13/index/{}">尾页</a>
            </div>
        ‘‘‘
    return div

def Pager(data,page,pageDataCount):
    ‘‘‘
    :param page: 当前页数
    :param pageDataCount: 每页显示多少条
    :param data_count: 数据总条数
    :return: 字典
    ‘‘‘
    #处理前端传来页码数
    page = 1 if page <= 0 else page
    #数据起始位置
    indexPage = (page - 1) * pageDataCount
    # 数据结束位置
    endPage = page * pageDataCount
    #获取数据总条数
    data_count = data.count()
    #对比起始位置是否大于总条数
    if indexPage > data_count:
        page = 1
        indexPage = (page - 1) * pageDataCount
        endPage = page * pageDataCount
    #每页显示多少数据
    data = data[indexPage:endPage]
    #总页数
    web = math.ceil(data_count / pageDataCount)
    #生成分页样式
    div = html_div()
    #填充数据
    webDiv = div.format(page, 1 if page - 1 <= 0 else page - 1, page + 1, web, pageDataCount, data_count,
                        1 if page > web else web)
    #通过mark_safe 将格式化html代码
    page = mark_safe(webDiv)
    ret = {‘data‘:data,‘page‘: page}
    return ret
时间: 2024-08-03 14:00:55

django 简单分页的相关文章

django 自定义分页模块

django 自定义分页模块 from django.shortcuts import render, HttpResponse, redirect from django.utils.safestring import mark_safe class Page(object): def __init__(self, current_page): self.current_page = int(current_page) @property def start(self): return (se

django简单用户登陆验证

一.django简单用户登陆验证   前端页面:     <div class="container  col-lg-6  col-lg-offset-4">         <br><br><br><br><br>       <form class="form-signin col-sm-4 col-lg-offset-2" action="{% url 'login' %}

MVC中使用MVCPager简单分页

一.建立数据库以及建立MVC项目 自己随便建立一个数据库,并且添加数据.我建立的数据库如下. 二.建立LINQ to SQL映射. 然后一步步点确定 三.编写代码 在Controllers中建立控制器,模板为空.建立的项目如下: 要添加视图Index 在Controller中选中Index 并且添加视图, 模板选中List, 如下 注意后台要添加对MvcPager的程序集引用,后台代码如下: using Webdiyer.WebControls.Mvc; public class Student

在 asp.net mvc中的简单分页算法

//第一步:建立如下分页实体类:namespace MVCPager.Helpers { /// <summary> /// 简单分页算法类 /// </summary> public class Pager { public int RecordCount { get; set; } public int PageIndex { get; set; } public int PageSize { get; set; } public int PageCount { get { r

PHP+MYSQL实现简单分页

第一次发表文章,试一试,这是我编写的一段小代码,实现简单分页效果,代码如下: 1 <html> 2 <head> 3 <title>物资管理系统</title> 4 <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 5 <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstra

MVC简单分页

对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Mvc简单分页.Models { public class CarBF { private MyDBDataContext

利用PHP实现MySQL表数据的简单分页

PHP实现MySQL表数据的简单分页 <?php  $conn=mysql_connect("127.0.0.1","root",'123456') or die("数据库连接失败"); mysql_select_db("ym"); mysql_query("set names utf8"); //获取数据的行数 $all=mysql_num_rows(mysql_query("select

不用组件的简单分页

set conn=server.CreateObject("adodb.connection") set rs=server.CreateObject("adodb.recordset") cnpath="data source=" & server.MapPath("question.mdb") conn.open "provider=microsoft.jet.oledb.4.0;" &

ASP.NET Repeater控件实现简单分页

早上,有看MSDN,看到了 PagedDataSource 类 http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.pageddatasource(v=vs.110).aspx 想起以前Insus.NET只对Gridview和DataList控件进行自定义分页.<GridView和DataList分页组件与用户控件>http://www.cnblogs.com/insus/archive/2009/03/19/14