Django -- 分页 -- 批量导入

Django --  分页

分页

  • Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中

Paginator对象

  • Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数

属性

  • count:对象总数
  • num_pages:页面总数
  • page_range:页码列表,从1开始,例如[1, 2, 3, 4]

方法

  • page(num):下标以1开始,如果提供的页码不存在,抛出InvalidPage异常

异常exception

  • InvalidPage:当向page()传入一个无效的页码时抛出
  • PageNotAnInteger:当向page()传入一个不是整数的值时抛出
  • EmptyPage:当向page()提供一个有效值,但是那个页面上没有任何对象时抛出

Page对象

创建对象

  • Paginator对象的page()方法返回Page对象,不需要手动构造

属性

  • object_list:当前页上所有对象的列表   -->   page(1).object_list : 第 1 页的数据
  • number:当前页的序号,从1开始
  • paginator:当前page对象相关的Paginator对象
  • count : 数据总数
  • num_page : 总页数
  • page_range : 页码列表  -->  range(1, 5)
  • page(index) : 第 index 页的 page 对象

方法

  • has_next():如果有下一页返回True
  • has_previous():如果有上一页返回True
  • has_other_pages():如果有上一页或下一页返回True
  • next_page_number():返回下一页的页码,如果下一页不存在,抛出InvalidPage异常
  • previous_page_number():返回上一页的页码,如果上一页不存在,抛出InvalidPage异常
  • page(1).start_index() : 本页第一条记录的序数(从1开始)
  • page(1).end_index() : 本页最后一条记录的序数(从1开始)
  • len():返回当前页面对象的个数
  • p.page(0) : 错误的页,抛出异常
  • 迭代页面对象:访问当前页面中的每个对象

示例

创建视图pagTest

from django.core.paginator import Paginator

def pagTest(request, pIndex):
    list1 = AreaInfo.objects.filter(aParent__isnull=True)
    p = Paginator(list1, 10)
    if pIndex == ‘‘:
        pIndex = ‘1‘
    pIndex = int(pIndex)
    list2 = p.page(pIndex)
    plist = p.page_range
    return render(request, ‘booktest/pagTest.html‘, {‘list‘: list2, ‘plist‘: plist, ‘pIndex‘: pIndex})

配置url

url(r‘^pag(?P<pIndex>[0-9]*)/$‘, views.pagTest, name=‘pagTest‘),

定义模板pagTest.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<ul>
{%for area in list%}
<li>{{area.id}}--{{area.atitle}}</li>
{%endfor%}
</ul>

{%for pindex in plist%}
{%if pIndex == pindex%}
{{pindex}}  
{%else%}
<a href="/pag{{pindex}}/">{{pindex}}</a>  
{%endif%}
{%endfor%}
</body>
</html>

  

批量导入数据

Book.objects.bulk_create(Booklist)

from django.shortcuts import render,HttpResponse

# Create your views here.
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

from app01.models import *
def index(request):

    ‘‘‘
    批量导入数据:

    Booklist=[]
    for i in range(100):
        Booklist.append(Book(title="book"+str(i),price=30+i*i))
    Book.objects.bulk_create(Booklist)

    ‘‘‘

    book_list=Book.objects.all()

    paginator = Paginator(book_list, 10)
    page = request.GET.get(‘page‘,1)
    currentPage=int(page)

    try:
        print(page)
        book_list = paginator.page(page)
    except PageNotAnInteger:
        book_list = paginator.page(1)
    except EmptyPage:
        book_list = paginator.page(paginator.num_pages)

    return render(request,"index.html",locals())

  

时间: 2024-10-16 16:08:40

Django -- 分页 -- 批量导入的相关文章

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo

django 批量导入数据

一.需求 我在数据库中建了一张表,用来保存ucloud云上的project id 和project name models.py代码如下 #coding:utf-8 from django.db import models class Project(models.Model):     name = models.CharField(u'项目名称',max_length=32,blank=True)     id = models.CharField(u'项目ID',max_length=32

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

Django model中数据批量导入bulk_create()

在Django中需要向数据库中插入多条数据(list).使用如下方法,每次save()的时候都会访问一次数据库.导致性能问题: for i in resultlist: p = Account(name=i) p.save() 在django1.4以后加入了新的特性.使用django.db.models.query.QuerySet.bulk_create()批量创建对象,减少SQL查询次数.改进如下: querysetlist=[] for i in resultlist: querysetl

25 Jul 18 批量导入 保持搜索 Q补充 GET/POST

25 Jul 18 一.批量导入 book_list=[] for i in range(1,101): book=Book(title="book_%s"%i,price=i*i) book_list.append(book) Book.objects.bulk_create(book_list) 二.保持搜索的实现(分页,filter) 1. request.GET得到的字典不能修改,但可以对其深拷贝的字典对象进行修改 import copy self.params = copy.

Django基础之django分页

一.Django的内置分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here. from app01.models import * from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger def index(request): ''' 批量导入数据: Booklist=[]

AD帐号批量导入导出

一.批量导入帐户 步骤及原理: 1.先用Excel表格做一个简单模版,将其保存为.csv格式! 2.再用For命令结合dsadd 来完成批量创建用户! 使用到的命令:(注:以下命令里参数为笔者做测试,别忘记修改!) for /f  "tokens=1,2,3,4,5 delims=," %a in (D:\USER1.csv) do dsadd user "cn=%c,ou=IT,dc=test,dc=com"  -samid %d -upn %d -ln %a -

将ACCESS数据批量导入SQL SERVER

代码: IF OBJECT_ID('Sp_InputAccesstoSQL') IS NOT NULL     DROP PROC Sp_InputAccesstoSQL GO CREATE PROC Sp_InputAccesstoSQL @dir NVARCHAR(100),--ACCESS文件存放路径:如D:\Files @tabname NVARCHAR(50) --定义导入到数据库中的表名,如果存在就不需要创建 AS SET NOCOUNT ON DECLARE @cmd NVARCH

HBase结合MapReduce批量导入(HDFS中的数据导入到HBase)

HBase结合MapReduce批量导入 1 package hbase; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.hbase.client.Put; 8 import org.apache.hadoop.hbase.mapreduce.TableOutput