分页是指在web页面有大量数据需要显示,为了阅读方便在每个页中只显示部分数据
Django提供了Paginator类可以方便的实现分页功能
Paginator类位于django.core.paginator模块中
Paginator
负责分页数据整体的管理
对象的构造方法:Paginator = Paginator(object_list,per_page)
-参数 -object_list 需要分页数据的对象列表 -per_page 每页数据个数
-返回值 -Paginator的对象
Paginator 属性
-count:需要分页数据的对象总数 -num_pages:分页后的页面总数
-page_range:从1开始的range对象,用于记录当前页码数 -per_page:每页数据的个数
Paginator 对象.page(number)
-参数 number为页码信息(从1开始)
-返回当前number页对应的页信息
-如果提供的页码不存在,则抛出InvalidPage异常
InvalidPage:总的异常基类,包含以下两个异常子类
- PageNotAnInteger:当向page()传入一个不是整数的值时抛出
- EmptyPage:当向page()提供一个有效值,但是那个 页面上没有任何对象时抛出
page对象
负责具体某一页的数据的管理
创建对象
Paginator 对象的page()方法返回page对象
page = Paginator .page(页码)
Page对象属性
- object_list:当前页上所有数据对象的列表
- number:当前页的序号,从1开始
- Paginator :当前page对象相关的Paginator 对象
CSV文件
逗号分隔值,也称为字符分隔值,其文件以纯文本形式存储表格数据(数字和文本)
说明:可被常见制表工具,如Excel等直接进行读取
python提供了内建库 -CSV;可以直接通过该库操作CSV文件
import csv
with open('eggs.csv','w',newline='')as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['a','b','c'])
# 在该目录下自动创建一个eggs.csv文件,并写入数据
csv文件下载
在网站中,实现下载csv,注意如下:响应Content-Type类型需修改为text/csv,这告诉浏览器该文档是csv文件,而不是HTML文件,响应会获得一个额外的Content-Disposition标头,其中包含csv文件的名称,它将被浏览器用于开启“另存为....”对话框
#views.py代码:
def test_csv(request):
response = HttpResponse(content_type = 'text/csv')
response['Content-Disposition'] = 'attachment;filename = "text.csv"'
all_data = ['a','b','c','d']
writer = csv.writer(response)
writer.writerow(all_data)
return response
#urls.py中urlpatterns添加path('test_csv/',views.test_csv),
结果如下;