Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
冰清雪酷
Python-100-Days
提交
5e2fda29
P
Python-100-Days
项目概览
冰清雪酷
/
Python-100-Days
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python-100-Days
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5e2fda29
编写于
6月 30, 2020
作者:
J
jackfrued
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新了部分文档
上级
4bec7557
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
37 addition
and
21 deletion
+37
-21
Day41-55/45.制作报表.md
Day41-55/45.制作报表.md
+21
-2
Day41-55/46.日志和调试工具栏.md
Day41-55/46.日志和调试工具栏.md
+0
-0
Day41-55/47.中间件的应用.md
Day41-55/47.中间件的应用.md
+5
-5
Day91-100/95.使用Django开发商业项目.md
Day91-100/95.使用Django开发商业项目.md
+2
-2
README.md
README.md
+9
-12
未找到文件。
Day41-55/45.
报表和日志
.md
→
Day41-55/45.
制作报表
.md
浏览文件 @
5e2fda29
## 报表
##
制作
报表
### 导出Excel报表
...
...
@@ -52,6 +52,26 @@ urlpatterns = [
]
```
### 导出PDF报表
在Django项目中,如果需要导出PDF报表,可以借助三方库reportlab来生成PDF文件的内容,再将文件的二进制数据输出给浏览器并指定MIME类型为
`application/pdf`
,具体的代码如下所示。
```
Python
def export_pdf(request: HttpRequest) -> HttpResponse:
buffer = 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
```
关于如何用reportlab定制PDF报表的内容,可以参考reportlab的
[
官方文档
](
https://www.reportlab.com/docs/reportlab-userguide.pdf
)
。
### 生成前端统计图表
如果项目中需要生成前端统计图表,可以使用百度的
[
ECharts
](
<
https://echarts.baidu.com/
>
)
。具体的做法是后端通过提供数据接口返回统计图表所需的数据,前端使用ECharts来渲染出柱状图、折线图、饼图、散点图等图表。例如我们要生成一个统计所有老师好评数和差评数的报表,可以按照下面的方式来做。
...
...
@@ -62,7 +82,6 @@ def get_teachers_data(request):
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]
# 返回JSON格式的数据
return JsonResponse({'names': names, 'good': good_counts, 'bad': bad_counts})
```
...
...
Day41-55/46.
日志和调试工具栏.md
→
Day41-55/46.日志和调试工具栏.md
浏览文件 @
5e2fda29
文件已移动
Day41-55/47.中间件的应用.md
浏览文件 @
5e2fda29
...
...
@@ -22,20 +22,20 @@ MIDDLEWARE = [
我们稍微为大家解释一下这些中间件的作用:
1.
CommonMiddleware
- 基础设置中间件,可以处理以下一些配置参数。
1.
`CommonMiddleware`
- 基础设置中间件,可以处理以下一些配置参数。
-
DISALLOWED_USER_AGENTS - 不被允许的用户代理(浏览器)
-
APPEND_SLASH - 是否追加
`/`
-
USE_ETAG - 浏览器缓存相关
2.
SecurityMiddleware
- 安全相关中间件,可以处理和安全相关的配置项。
2.
`SecurityMiddleware`
- 安全相关中间件,可以处理和安全相关的配置项。
-
SECURE_HSTS_SECONDS - 强制使用HTTPS的时间
-
SECURE_HSTS_INCLUDE_SUBDOMAINS - HTTPS是否覆盖子域名
-
SECURE_CONTENT_TYPE_NOSNIFF - 是否允许浏览器推断内容类型
-
SECURE_BROWSER_XSS_FILTER - 是否启用跨站脚本攻击过滤器
-
SECURE_SSL_REDIRECT - 是否重定向到HTTPS连接
-
SECURE_REDIRECT_EXEMPT - 免除重定向到HTTPS
3.
SessionMiddleware
- 会话中间件。
4.
CsrfViewMiddleware
- 通过生成令牌,防范跨请求份伪的造中间件。
5.
XFrameOptionsMiddleware
- 通过设置请求头参数,防范点击劫持攻击的中间件。
3.
`SessionMiddleware`
- 会话中间件。
4.
`CsrfViewMiddleware`
- 通过生成令牌,防范跨请求份伪的造中间件。
5.
`XFrameOptionsMiddleware`
- 通过设置请求头参数,防范点击劫持攻击的中间件。
在请求的过程中,上面的中间件会按照书写的顺序从上到下执行,然后是URL解析,最后请求才会来到视图函数;在响应的过程中,上面的中间件会按照书写的顺序从下到上执行,与请求时中间件执行的顺序正好相反。
...
...
Day91-100/95.使用Django开发商业项目.md
浏览文件 @
5e2fda29
...
...
@@ -662,7 +662,7 @@ def simple_middleware(get_response):
```
```
Python
class MyMiddleware
(object)
:
class MyMiddleware:
def __init__(self, get_response):
self.get_response = get_response
...
...
@@ -675,7 +675,7 @@ class MyMiddleware(object):
```
```
Python
class MyMiddleware:
class MyMiddleware
(MiddlewareMixin)
:
def __init__(self):
pass
...
...
README.md
浏览文件 @
5e2fda29
...
...
@@ -249,14 +249,19 @@
-
Django框架对session的支持
-
视图函数中的cookie读写操作
#### Day4
6 - [报表和日志](./Day41-55/46.报表和日志
.md)
#### Day4
5 - [报表和日志](./Day41-55/45.制作报表
.md)
-
通过HttpResponse修改响应头
-
使用StreamingHttpResponse处理大文件
-
使用xlwt生成Excel报表
-
使用reportlab生成PDF报表
-
使用ECharts生成前端图表
-
配置日志和Django-Debug-Toolbar
#### Day46 - [日志和调试工具栏](./Day41-55/46.日志和调试工具栏.md)
-
配置日志
-
配置Django-Debug-Toolbar
-
优化ORM代码
#### Day47 - [中间件的应用](./Day41-55/47.中间件的应用.md)
...
...
@@ -282,20 +287,12 @@
-
使用装饰器实现页面缓存
-
为数据接口提供缓存服务
#### Day52 - [文件上传
和富文本编辑](./Day41-55/52.文件上传和富文本编辑器
.md)
#### Day52 - [文件上传
](./Day41-55/52.文件上传
.md)
-
文件上传表单控件和图片文件预览
-
服务器端如何处理上传的文件
-
富文本编辑器概述
-
wangEditor的使用
#### Day53 - [短信和邮件](./Day41-55/53.短信和邮件.md)
-
常用短信网关平台介绍
-
使用螺丝帽发送短信
-
Django框架对邮件服务的支持
#### Day5
4 - [异步任务和定时任务](./Day41-55/54
.异步任务和定时任务.md)
#### Day5
3 - [异步任务和定时任务](./Day41-55/53
.异步任务和定时任务.md)
-
网站优化第二定律
-
配置消息队列服务
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录