Django(分页和生成csv文件)

本文介绍了如何在Django中实现分页功能,利用Paginator类进行数据管理,并详细解析了Paginator的属性和使用方法。同时,文章还探讨了CSV文件的性质,以及在Python中使用内置CSV库操作CSV文件的方法,特别是如何在Django中实现CSV文件的下载,包括设置Content-Type和Content-Disposition头来触发浏览器的下载提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

结果如下; 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值