0
点赞
收藏
分享

微信扫一扫

Django(分页和生成csv文件)

奔跑的酆 2022-04-23 阅读 36
django

分页是指在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),

结果如下; 

 

举报

相关推荐

0 条评论