python 分页

1、创建数据库信息

class UserList(models.Model):
            username = models.CharField(max_length=32)
            age = models.IntegerField()

2、创建URL

from app01 import views
        urlpatterns = [
            url(r‘^admin/‘, admin.site.urls),
            url(r‘^user_list/‘, views.user_list),
        ]

3、定义一个Pager类,处理页数换算

class Pager(object):
    def __init__(self, current_page):
        self.current_page = int(current_page)

@property
    def start(self):
        return (self.current_page - 1) * 10

@property
    def end(self):
        return self.current_page * 10

def page_str(self, all_item, base_url):
        all_page, div = divmod(all_item, 10)
        if div > 0:
            all_page += 1

pager_list = []
        if all_page <= 11:
            start = 1
            end = all_page
        else:
            if self.current_page <= 6:
                start = 1
                end = 12
            else:
                start = self.current_page - 5
                end = self.current_page + 6
                if self.current_page + 6 > all_page:
                    start = all_page - 11
                    end = all_page + 1

for i in range(start, end):
            if i == self.current_page:
                temp = ‘<a style="colo:red;font-size:26px;" href="%s%d">%d</a>‘ % (base_url, i, i,)
            else:
                temp = ‘<a href="%s%d">%d</a>‘ % (base_url, i, i)
            pager_list.append(temp)

# pre_next

if self.current_page > 1:
            pre_page = ‘<a href="%s%d">pre_next</a>‘ % (base_url, self.current_page - 1)
        else:
            pre_page = ‘<a href="javascript:void(0);">pre_next</a>‘
        # next
        if self.current_page >= all_page:
            next_page = ‘<a href="javascript:void(0);">next</a>‘
        else:
            next_page = ‘<a href="%s%d">next</a>‘ % (base_url, self.current_page + 1)
        pager_list.insert(0, pre_page)
        pager_list.append(next_page)
        return mark_safe("".join(pager_list))

4、创建视图 ,并导入上面创建的Pager类

def user_list(request):
            current_page=request.GET.get(‘page‘,1)
            page_obj = page.Pager(current_page)
            result = models.UserList.objects.all()[page_obj.start:page_obj.end]
            all_item = models.UserList.objects.all().count()
            pager_str = page_obj.page_str(all_item, "/user_list/?page=")
            return  render(request, ‘user_list.html‘, {‘result‘: result, ‘pager_str‘: pager_str})

5、创建前端user_list.html调用后台信息。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        a{
            padding: 5px;
        }
    </style>
</head>
<body>
    <table>
        {% for line in result %}
        <tr>
            <td>{{ line.username }}</td>
            <td>{{ line.age }}</td>
        </tr>
        {% endfor %}

</table>
    <div>
        {{ pager_str|safe }}
    </div>
</body>
</html>

时间: 2024-10-29 19:07:08

python 分页的相关文章

Python分页转Mybatis pagehelper格式分页

最近工作里遇到一个需求要把之前用Java写的一个http接口替换成用Python写的,出参是带了mybatis pageHelper中PageInfo信息的一个JSON串,而Python这边分页不会涉及到数据库查询,属于直接对list进行分页..然后就有了下面的对开源Python分页模块的一个改写(模块地址:https://github.com/Pylons/paginate).至于改动~~emmm~具体来说,就是加了个元类,给原先的Page类动态加了个返回Java格式的JSON字符串的方法,至

自己做的一个python分页的自定义方法

程序分布如下: 数据库大概如下: test.py中的代码如下: #coding=utf-8 #m #m\__author__ = 'Administrator' import MySQLdb #mfrom django.shortcuts import render_to_response import json def getdata(request):     conn = MySQLdb.connect(             host='192.168.8.176',         

MySQL中的分页操作结合python

mysql中的分页操作结合python --分页: --方式1: select * from ta12 limit 10;-- 读取十行 select * from ta12 limit 10,10 --从第十行读取 往后再读十行 --方式2: select * from ta12 limit 10 offset 20 ; --从第二十行开始读取10行 -- 结合python 分页: page = input('请输入要查看的页码') page = int(page) select * from

MySQL——索引,连表……

0. 唯一索引 create table t1( id int ...., num int, xx int, unique 唯一索引名称 (列名,列名), constraint .... ) # 1 1 1 2 1 2 PS: 唯一: 约束不能重复(可以为空) PS: 主键不能重复(不能为空) 加速查找 1. 外键的变种 a. 用户表和部门表 用户: 1 alex 1 2 root 1 3 egon 2 4 laoyao 3 部门: 1 服务 2 保安 3 公关 ===> 一对多 b. 用户表和

python运维开发(二十)----models操作、中间件、缓存、信号、分页

内容目录 select Form标签数据库操作 models操作F/Q models多对多表操作 Django中间件 缓存 信号 分页 select Form标签补充 在上一节中我们可以知道Form标签有两个作用,一个做用户提交数据验证,一个是生成HTML标签 在生成HTML标签中可以生成select标签,select的选项数据我们可以在数据库中查询读取到. class UserType(models.Model): caption = models.CharField(max_length=1

Python中使用flask_sqlalchemy实现分页效果方法详解

Flask-sqlalchemy是关于flask一个针对数据库管理的.本文我们将采用一个关于员工显示例子,为大家展示分页效果的实现,一起来看看吧,希望对大家学习python有所帮助. 首先,我们创建SQLALCHEMY对像db. 1 from flask import Flask, render_template,request 2 from flask_sqlalchemy import SQLAlchemy 5 6 app = Flask(__name__,static_url_path='

第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页

第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现搜索结果分页 逻辑处理函数 计算搜索耗时 在开始搜索前:start_time = datetime.now()获取当前时间 在搜索结束后:end_time = datetime.now()获取当前时间 last_time = (end_time-start_time).total_seconds()结束时间减去开始时间等于用时,转换成秒 from django.shortcu

Python之路Day21-自定义分页和cookie

本节知识点概要 1.URL 2.views - 请求其他信息 - 装饰器 3.Templates - 母版 - 自定义 4.Models操作 5.分页(自定义分页) 6.cookie 7.session 8.Form验证 - 缓存 - 中间件 - 信号 - CSRF - Admin/ModelForm 上节内容回顾 1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? form表单提交 提交 -> url路由系统 > 函数或类中的方法 - 执行其他操作,最

python/Djangof分页与自定义分页

python/Djangof分页与自定义分页 Django分页 1 ##============================================分页======================================================= 2 # current_pagc = request.GET.get('page') 3 # from django.core.paginator import Paginator,Page 4 # # result = m