├── Chengdu_v2
├── css
│ └── style.css
├── images
│ ├── app.png
│ ├── enough.png
│ ├── flask.jpg
│ ├── four.jpg
│ ├── timetravel0.png
│ ├── timetravel1.png
│ ├── timetravel2.png
│ ├── vs-raw.png
│ ├── vs.png
│ └── wechat.png
├── index.html
└── js
│ └── remark.min.js
├── README.md
└── Shanghai_v1
├── audios
├── django.mp3
├── jinja.mp3
├── werkzeug-backup.mp3
└── werkzeug.mp3
├── css
└── style.css
├── images
├── big-hole.jpg
├── big-hole2.jpg
├── black-hole.jpg
├── enough.png
├── flask.png
├── four.jpg
├── hole.jpg
├── push.jpg
├── real-flask.png
├── small-hole.jpg
└── wechat.png
├── index.html
└── js
└── remark.min.js
/Chengdu_v2/css/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: Arial, Calibri, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
3 | }
4 |
5 | h1, h2, h3 {
6 | font-weight: bold;
7 | margin-bottom: 0;
8 | }
9 |
10 | li {
11 | margin-block-start: 0.5em;
12 | margin-block-end: 0.5em;
13 | margin-inline-start: 0px;
14 | margin-inline-end: 0px;
15 | }
16 |
17 | .inverse {
18 | background: #272822;
19 | color: #777872;
20 | text-shadow: 0 0 20px #333;
21 | }
22 | .inverse h1, .inverse h2 {
23 | color: #f3f3f3;
24 | }
25 |
26 | .inverse-lite {
27 | background: #999;
28 | color: #777872;
29 | }
30 | .inverse-lite h1, .inverse-lite h2 {
31 | color: #f3f3f3;
32 | }
33 |
34 | .footnote {
35 | position: absolute;
36 | bottom: 1em;
37 | font-size: small;
38 | }
39 |
40 | .remark-code, .remark-inline-code { font-family: Consolas, 'Courier New', monospace; }
41 | .remark-slide-content {font-size: 22px;}
42 |
43 | .corner-ribbon{
44 | width: 200px;
45 | background: #e43;
46 | position: absolute;
47 | top: 25px;
48 | left: -50px;
49 | text-align: center;
50 | line-height: 50px;
51 | letter-spacing: 1px;
52 | color: #ffffff;
53 | transform: rotate(-45deg);
54 | -webkit-transform: rotate(-45deg);
55 | }
56 |
57 | /* Custom styles */
58 |
59 | .corner-ribbon.sticky{
60 | position: fixed;
61 | }
62 |
63 | .corner-ribbon.shadow{
64 | box-shadow: 0 0 3px rgba(0,0,0,.3);
65 | }
66 |
67 | /* Different positions */
68 |
69 | .corner-ribbon.top-left{
70 | top: 25px;
71 | left: -50px;
72 | transform: rotate(-45deg);
73 | -webkit-transform: rotate(-45deg);
74 | }
75 |
76 | .corner-ribbon.top-right{
77 | top: 25px;
78 | right: -50px;
79 | left: auto;
80 | transform: rotate(45deg);
81 | -webkit-transform: rotate(45deg);
82 | }
83 |
84 | .corner-ribbon.bottom-left{
85 | top: auto;
86 | bottom: 25px;
87 | left: -50px;
88 | transform: rotate(45deg);
89 | -webkit-transform: rotate(45deg);
90 | }
91 |
92 | .corner-ribbon.bottom-right{
93 | top: auto;
94 | right: -50px;
95 | bottom: 25px;
96 | left: auto;
97 | transform: rotate(-45deg);
98 | -webkit-transform: rotate(-45deg);
99 | }
100 |
101 | /* Colors */
102 |
103 | .white{background: #f0f0f0; color: #555;}
104 | .black{background: #333;}
105 | .grey{background: #999;}
106 | .blue{background: #39d;}
107 | .green{background: #2c7;}
108 | .turquoise{background: #1b9;}
109 | .purple{background: #95b;}
110 | .red{background: #e43;}
111 | .orange{background: #e82;}
112 | .yellow{background: #ec0;}
113 |
114 |
115 | .framed {
116 | border: 3px solid black;
117 | padding: 10px;
118 | margin-top: 15px;
119 | }
120 |
121 | .blur {
122 | color: transparent;
123 | text-shadow: 0 0 5px rgba(0,0,0,0.5);
124 | }
--------------------------------------------------------------------------------
/Chengdu_v2/images/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/app.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/enough.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/enough.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/flask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/flask.jpg
--------------------------------------------------------------------------------
/Chengdu_v2/images/four.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/four.jpg
--------------------------------------------------------------------------------
/Chengdu_v2/images/timetravel0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/timetravel0.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/timetravel1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/timetravel1.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/timetravel2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/timetravel2.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/vs-raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/vs-raw.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/vs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/vs.png
--------------------------------------------------------------------------------
/Chengdu_v2/images/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Chengdu_v2/images/wechat.png
--------------------------------------------------------------------------------
/Chengdu_v2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 基于 Flask 的 Web API 开发指南 v2.0 - PyCon China 2019 成都
5 |
6 |
7 |
8 |
9 |
19 |
20 |
21 |
22 |
1224 |
1226 |
1234 |
1235 |
1236 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 基于 Flask 的 Web API 开发指南
2 | PyCon China 2019 成都分会场,10 月 26 日,西南交大犀浦校区。
3 |
4 | - 幻灯片:http://greyli.com/slides/pyconchina2019-api
5 | - 录像:[bilibili](https://www.bilibili.com/video/av75168852/) | [YouTube](https://youtu.be/Fz5Zq4WM_c0)
6 | - 幻灯片源码:https://github.com/greyli/pyconchina2019-api
7 | - 示例程序源码(NoteAPI):https://github.com/greyli/noteapi
8 |
9 |
--------------------------------------------------------------------------------
/Shanghai_v1/audios/django.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/audios/django.mp3
--------------------------------------------------------------------------------
/Shanghai_v1/audios/jinja.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/audios/jinja.mp3
--------------------------------------------------------------------------------
/Shanghai_v1/audios/werkzeug-backup.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/audios/werkzeug-backup.mp3
--------------------------------------------------------------------------------
/Shanghai_v1/audios/werkzeug.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/audios/werkzeug.mp3
--------------------------------------------------------------------------------
/Shanghai_v1/css/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: Arial, Calibri, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
3 | }
4 |
5 | h1, h2, h3 {
6 | font-weight: bold;
7 | margin-bottom: 0;
8 | }
9 |
10 | li {
11 | margin-block-start: 0.5em;
12 | margin-block-end: 0.5em;
13 | margin-inline-start: 0px;
14 | margin-inline-end: 0px;
15 | }
16 |
17 | .inverse {
18 | background: #272822;
19 | color: #777872;
20 | text-shadow: 0 0 20px #333;
21 | }
22 | .inverse h1, .inverse h2 {
23 | color: #f3f3f3;
24 | }
25 |
26 | .footnote {
27 | position: absolute;
28 | bottom: 3em;
29 | }
30 |
31 | .remark-code, .remark-inline-code { font-family: Consolas, 'Courier New', monospace; }
32 | .remark-slide-content {font-size: 22px;}
33 |
--------------------------------------------------------------------------------
/Shanghai_v1/images/big-hole.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/big-hole.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/big-hole2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/big-hole2.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/black-hole.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/black-hole.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/enough.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/enough.png
--------------------------------------------------------------------------------
/Shanghai_v1/images/flask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/flask.png
--------------------------------------------------------------------------------
/Shanghai_v1/images/four.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/four.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/hole.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/hole.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/push.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/push.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/real-flask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/real-flask.png
--------------------------------------------------------------------------------
/Shanghai_v1/images/small-hole.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/small-hole.jpg
--------------------------------------------------------------------------------
/Shanghai_v1/images/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/greyli/pyconchina2019-api/41d45bea6fd6ce162309ce4fe84df95908b66654/Shanghai_v1/images/wechat.png
--------------------------------------------------------------------------------
/Shanghai_v1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 基于 Flask 的 Web API 开发指南 - PyCon China 2019
5 |
6 |
7 |
8 |
19 |
20 |
21 |
22 |
904 |
906 |
913 |
914 |
--------------------------------------------------------------------------------