广东深圳住房和城乡建设部网站,怎么给餐饮店做网站,易语言建设网站,传奇网页游戏破解版文章目录Django实践-06导出excel/pdf/echartsDjango实践-06导出excel/pdf/echarts导出excel安装依赖库修改views.py添加excel导出函数修改urls.py添加excel/运行测试导出pdf安装依赖库修改views.py添加pdf导出函数修改urls.py添加pdf/生成前端统计图表修改views.py添加get_teac…
文章目录Django实践-06导出excel/pdf/echartsDjango实践-06导出excel/pdf/echarts导出excel安装依赖库修改views.py添加excel导出函数修改urls.py添加excel/运行测试导出pdf安装依赖库修改views.py添加pdf导出函数修改urls.py添加pdf/生成前端统计图表修改views.py添加get_teachers_data函数修改urls.py添加teachers_data创建echarts.html页面设置echarts.html弹出测试并运行总结Django实践-06导出excel/pdf/echarts
官网https://www.djangoproject.com/ 博客https://www.liujiangblog.com/ 本博客内容参考githttps://gitcode.net/mirrors/jackfrued/Python-100-Days 一些细节问题大家可以查看git连接。本文主要的改变为把代码升级为django4.1版本。
Django静态文件问题备注 参考 Django测试开发-20-settings.py中templates配置使得APP下的模板以及根目录下的模板均可生效 解决django 多个APP时 static文件的问题
django配置app中的静态文件步骤 Django多APP加载静态文件
django.short包参考https://docs.djangoproject.com/en/4.1/topics/http/shortcuts/
Django实践-06导出excel/pdf/echarts
导出excel
安装依赖库
pip install xlwt修改views.py添加excel导出函数
def export_teachers_excel(request):import xlwtimport urllib.parse# 创建工作簿wb xlwt.Workbook()# 添加工作表sheet wb.add_sheet(老师信息表)# 查询所有老师的信息queryset Teacher.objects.all()# 向Excel表单中写入表头colnames (姓名, 介绍, 好评数, 差评数, 学科)for index, name in enumerate(colnames):sheet.write(0, index, name)# 向单元格中写入老师的数据props (name, detail, good_count, bad_count, subject)for row, teacher in enumerate(queryset):for col, prop in enumerate(props):value getattr(teacher, prop, )if isinstance(value, Subject):value value.namesheet.write(row 1, col, value)# 保存Excelbuffer BytesIO()wb.save(buffer)# 将二进制数据写入响应的消息体中并设置MIME类型resp HttpResponse(buffer.getvalue(), content_typeapplication/vnd.ms-excel)# 中文文件名需要处理成百分号编码filename urllib.parse.quote(老师.xls)# 通过响应头告知浏览器下载该文件以及对应的文件名resp[content-disposition] fattachment; filename*utf-8\\{filename}return resp修改urls.py添加excel/
path(excel/, views.export_teachers_excel),运行测试
打开url
localhost:8000/excel/也可以把
a href/excel教师信息下载/a添加到对应的页面中完成点击下载
导出pdf
安装依赖库
https://www.reportlab.com/docs/reportlab-userguide.pdf
pip install reportlab修改views.py添加pdf导出函数
def export_pdf(request: HttpRequest) - HttpResponse:import iofrom reportlab.pdfgen import canvasbuffer io.BytesIO()pdf canvas.Canvas(buffer)pdf.setFont(Helvetica, 80)pdf.setFillColorRGB(0.2, 0.5, 0.3)pdf.drawString(100, 550, hello, world!)pdf.showPage()pdf.save()resp HttpResponse(buffer.getvalue(), content_typeapplication/pdf)resp[content-disposition] inline; filenamedemo.pdfreturn resp修改urls.py添加pdf/
path(pdf/, polls_views.export_pdf),生成前端统计图表
如果项目中需要生成前端统计图表可以使用百度的ECharts。具体的做法是后端通过提供数据接口返回统计图表所需的数据前端使用ECharts来渲染出柱状图、折线图、饼图、散点图等图表。例如我们要生成一个统计所有老师好评数和差评数的报表可以按照下面的方式来做。
修改views.py添加get_teachers_data函数
# 跳转到echarts页面
def get_echarts(request):return render(request, polls/echarts.html)# 获取教师信息
def get_teachers_data(request):queryset Teacher.objects.all()names [teacher.name for teacher in queryset]good_counts [teacher.good_count for teacher in queryset]bad_counts [teacher.bad_count for teacher in queryset]return JsonResponse({names: names, good: good_counts, bad: bad_counts})修改urls.py添加teachers_data
path(teachers_data/, views.get_teachers_data),创建echarts.html页面
在templates/polls下创建echarts.html
!DOCTYPE html
html langen
headmeta charsetUTF-8title老师评价统计/title
/head
bodydiv idmain stylewidth: 600px; height: 400px/divpa href/返回首页/a/pscript srchttps://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js/scriptscriptvar myChart echarts.init(document.querySelector(#main))fetch(/teachers_data/).then(resp resp.json()).then(json {var option {color: [#f00, #00f],title: {text: 老师评价统计图},tooltip: {},legend: {data:[好评, 差评]},xAxis: {data: json.names},yAxis: {},series: [{name: 好评,type: bar,data: json.good},{name: 差评,type: bar,data: json.bad}]}myChart.setOption(option)})/script
/body
/html设置echarts.html弹出
把
a href/get_echarts教师好评分析/a添加到teachers.html页面 为便于按照博客练习页面已经一次性写好内容如下 参考Django实践-03模型-01表生成模型学科页面与教师页面编写
测试并运行 总结
本文主要是Django系列博客。本文是Django导出excel/pdf/echarts示例。 1.安装依赖库 2.修改views.py文件 3.修改urls.py文件 4.修改html文件 5.测试运行