怎么刪除寶塔其他版本建設的網站seo權威入門教程
文章目錄
- Django實踐-06導出excel/pdf/echarts
- Django實踐-06導出excel/pdf/echarts
- 導出excel
- 安裝依賴庫
- 修改views.py添加excel導出函數
- 修改urls.py添加excel/
- 運行測試
- 導出pdf
- 安裝依賴庫
- 修改views.py添加pdf導出函數
- 修改urls.py添加pdf/
- 生成前端統(tǒng)計圖表
- 修改views.py添加get_teachers_data函數
- 修改urls.py添加teachers_data
- 創(chuàng)建echarts.html頁面
- 設置echarts.html彈出
- 測試并運行
- 總結

Django實踐-06導出excel/pdf/echarts
官網:https://www.djangoproject.com/
博客:https://www.liujiangblog.com/
本博客內容參考git:https://gitcode.net/mirrors/jackfrued/Python-100-Days 一些細節(jié)問題,大家可以查看git連接。本文主要的改變?yōu)榘汛a升級為django4.1版本。
Django靜態(tài)文件問題備注:
參考:
Django測試開發(fā)-20-settings.py中templates配置,使得APP下的模板以及根目錄下的模板均可生效
解決django 多個APP時 static文件的問題
django配置app中的靜態(tài)文件步驟
Django多APP加載靜態(tài)文件
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# 創(chuàng)建工作簿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_type='application/vnd.ms-excel')# 中文文件名需要處理成百分號編碼filename = urllib.parse.quote('老師.xls')# 通過響應頭告知瀏覽器下載該文件以及對應的文件名resp['content-disposition'] = f'attachment; 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_type='application/pdf')resp['content-disposition'] = 'inline; filename="demo.pdf"'return resp
修改urls.py添加pdf/
path('pdf/', polls_views.export_pdf),
生成前端統(tǒng)計圖表
如果項目中需要生成前端統(tǒng)計圖表,可以使用百度的ECharts。具體的做法是后端通過提供數據接口返回統(tǒng)計圖表所需的數據,前端使用ECharts來渲染出柱狀圖、折線圖、餅圖、散點圖等圖表。例如我們要生成一個統(tǒng)計所有老師好評數和差評數的報表,可以按照下面的方式來做。
修改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),
創(chuàng)建echarts.html頁面
在templates/polls下創(chuàng)建echarts.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>老師評價統(tǒng)計</title>
</head>
<body><div id="main" style="width: 600px; height: 400px"></div><p><a href="/">返回首頁</a></p><script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js"></script><script>var myChart = echarts.init(document.querySelector('#main'))fetch('/teachers_data/').then(resp => resp.json()).then(json => {var option = {color: ['#f00', '#00f'],title: {text: '老師評價統(tǒng)計圖'},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.測試運行