基本信息
源码名称:python(flask)入门教程.pdf
源码大小:0.85M
文件格式:.pdf
开发语言:Python
更新时间:2020-04-09
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

CONTENTS
I User’s Guide 1
1 Foreword 3
1.1 What does “micro” mean? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Configuration and Conventions . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Growing with Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Foreword for Experienced Programmers 5
2.1 Thread-Locals in Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Develop for the Web with Caution . . . . . . . . . . . . . . . . . . . . . . 5
2.3 The Status of Python 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Installation 7
3.1 virtualenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 System-Wide Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Living on the Edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4 pip and distribute on Windows . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Quickstart 11
4.1 A Minimal Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 Static Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.5 Rendering Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.6 Accessing Request Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.7 Redirects and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.8 About Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.9 Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.10 Message Flashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.11 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.12 Hooking in WSGI Middlewares . . . . . . . . . . . . . . . . . . . . . . . 25
4.13 Deploying to a Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5 Tutorial 27
5.1 Introducing Flaskr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Step 0: Creating The Folders . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3 Step 1: Database Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
i
5.4 Step 2: Application Setup Code . . . . . . . . . . . . . . . . . . . . . . . . 29
5.5 Step 3: Creating The Database . . . . . . . . . . . . . . . . . . . . . . . . 31
5.6 Step 4: Request Database Connections . . . . . . . . . . . . . . . . . . . . 32
5.7 Step 5: The View Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.8 Step 6: The Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.9 Step 7: Adding Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.10 Bonus: Testing the Application . . . . . . . . . . . . . . . . . . . . . . . . 37
6 Templates 39
6.1 Jinja Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.2 Standard Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.3 Standard Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4 Controlling Autoescaping . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.5 Registering Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.6 Context Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7 Testing Flask Applications 43
7.1 The Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.2 The Testing Skeleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3 The First Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.4 Logging In and Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.5 Test Adding Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.6 Other Testing Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.7 Faking Resources and Context . . . . . . . . . . . . . . . . . . . . . . . . 47
7.8 Keeping the Context Around . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.9 Accessing and Modifying Sessions . . . . . . . . . . . . . . . . . . . . . . 48
8 Logging Application Errors 51
8.1 Error Mails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.2 Logging to a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.3 Controlling the Log Format . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.4 Other Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9 Debugging Application Errors 57
9.1 When in Doubt, Run Manually . . . . . . . . . . . . . . . . . . . . . . . . 57
9.2 Working with Debuggers . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
10 Configuration Handling 59
10.1 Configuration Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
10.2 Builtin Configuration Values . . . . . . . . . . . . . . . . . . . . . . . . . 60
10.3 Configuring from Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
10.4 Configuration Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.5 Development / Production . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.6 Instance Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
11 Signals 67
11.1 Subscribing to Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
11.2 Creating Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
11.3 Sending Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
ii
11.4 Signals and Flask’s Request Context . . . . . . . . . . . . . . . . . . . . . 70
11.5 Decorator Based Signal Subscriptions . . . . . . . . . . . . . . . . . . . . 70
11.6 Core Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
12 Pluggable Views 75
12.1 Basic Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
12.2 Method Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
12.3 Method Based Dispatching . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.4 Decorating Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.5 Method Views for APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
13 The Application Context 81
13.1 Purpose of the Application Context . . . . . . . . . . . . . . . . . . . . . 81
13.2 Creating an Application Context . . . . . . . . . . . . . . . . . . . . . . . 82
13.3 Locality of the Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
13.4 Context Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
14 The Request Context 85
14.1 Diving into Context Locals . . . . . . . . . . . . . . . . . . . . . . . . . . 85
14.2 How the Context Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
14.3 Callbacks and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
14.4 Teardown Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
14.5 Notes On Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
14.6 Context Preservation on Error . . . . . . . . . . . . . . . . . . . . . . . . 88
15 Modular Applications with Blueprints 91
15.1 Why Blueprints? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
15.2 The Concept of Blueprints . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
15.3 My First Blueprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
15.4 Registering Blueprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
15.5 Blueprint Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
15.6 Building URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
16 Flask Extensions 97
16.1 Finding Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
16.2 Using Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
16.3 Flask Before 0.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
17 Working with the Shell 99
17.1 Creating a Request Context . . . . . . . . . . . . . . . . . . . . . . . . . . 99
17.2 Firing Before/After Request . . . . . . . . . . . . . . . . . . . . . . . . . 100
17.3 Further Improving the Shell Experience . . . . . . . . . . . . . . . . . . . 100
18 Patterns for Flask 101
18.1 Larger Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
18.2 Application Factories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
18.3 Application Dispatching . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
18.4 Implementing API Exceptions . . . . . . . . . . . . . . . . . . . . . . . . 108
18.5 Using URL Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
iii
18.6 Deploying with Distribute . . . . . . . . . . . . . . . . . . . . . . . . . . 112
18.7 Deploying with Fabric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
18.8 Using SQLite 3 with Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
18.9 SQLAlchemy in Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
18.10 Uploading Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
18.11 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
18.12 View Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
18.13 Form Validation with WTForms . . . . . . . . . . . . . . . . . . . . . . . 132
18.14 Template Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
18.15 Message Flashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
18.16 AJAX with jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
18.17 Custom Error Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
18.18 Lazily Loading Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
18.19 MongoKit in Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
18.20 Adding a favicon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
18.21 Streaming Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
18.22 Deferred Request Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . 150
18.23 Adding HTTP Method Overrides . . . . . . . . . . . . . . . . . . . . . . 151
18.24 Request Content Checksums . . . . . . . . . . . . . . . . . . . . . . . . . 152
18.25 Celery Based Background Tasks . . . . . . . . . . . . . . . . . . . . . . . 153
19 Deployment Options 155
19.1 mod_wsgi (Apache) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
19.2 Standalone WSGI Containers . . . . . . . . . . . . . . . . . . . . . . . . . 158
19.3 uWSGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
19.4 FastCGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
19.5 CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
20 Becoming Big 169
20.1 Read the Source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
20.2 Hook. Extend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
20.3 Subclass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
20.4 Wrap with middleware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
20.5 Fork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
20.6 Scale like a pro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
20.7 Discuss with the community. . . . . . . . . . . . . . . . . . . . . . . . . . 171
II API Reference 173
21 API 175
21.1 Application Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
21.2 Blueprint Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
21.3 Incoming Request Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
21.4 Response Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
21.5 Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
21.6 Session Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
21.7 Test Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
21.8 Application Globals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
iv
21.9 Useful Functions and Classes . . . . . . . . . . . . . . . . . . . . . . . . . 207
21.10 Message Flashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
21.11 JSON Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
21.12 Template Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
21.13 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
21.14 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
21.15 Stream Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
21.16 Useful Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
21.17 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
21.18 Class-Based Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
21.19 URL Route Registrations . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
21.20 View Function Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
III Additional Notes 229
22 Design Decisions in Flask 231
22.1 The Explicit Application Object . . . . . . . . . . . . . . . . . . . . . . . . 231
22.2 The Routing System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
22.3 One Template Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
22.4 Micro with Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
22.5 Thread Locals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
22.6 What Flask is, What Flask is Not . . . . . . . . . . . . . . . . . . . . . . . 234
23 HTML/XHTML FAQ 235
23.1 History of XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
23.2 History of HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
23.3 HTML versus XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
23.4 What does “strict” mean? . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
23.5 New technologies in HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . 238
23.6 What should be used? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
24 Security Considerations 239
24.1 Cross-Site Scripting (XSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
24.2 Cross-Site Request Forgery (CSRF) . . . . . . . . . . . . . . . . . . . . . . 240
24.3 JSON Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
25 Unicode in Flask 243
25.1 Automatic Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
25.2 The Golden Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
25.3 Encoding and Decoding Yourself . . . . . . . . . . . . . . . . . . . . . . . 244
25.4 Configuring Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
26 Flask Extension Development 247
26.1 Anatomy of an Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
26.2 “Hello Flaskext!” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
26.3 Initializing Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
26.4 The Extension Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
26.5 Using _app_ctx_stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
v
26.6 Teardown Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
26.7 Learn from Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
26.8 Approved Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
26.9 Extension Import Transition . . . . . . . . . . . . . . . . . . . . . . . . . 254
27 Pocoo Styleguide 255
27.1 General Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
27.2 Expressions and Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 256
27.3 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
27.4 Docstrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
27.5 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
28 Python 3 Support 259
28.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
28.2 API Stability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
28.3 Few Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
28.4 Small Ecosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
28.5 Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
29 Upgrading to Newer Releases 261
29.1 Version 0.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
29.2 Version 0.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
29.3 Version 0.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
29.4 Version 0.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
29.5 Version 0.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
29.6 Version 0.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
29.7 Version 0.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
29.8 Version 0.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
30 Flask Changelog 269
30.1 Version 0.10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
30.2 Version 0.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
30.3 Version 0.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
30.4 Version 0.8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
30.5 Version 0.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
30.6 Version 0.7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
30.7 Version 0.7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
30.8 Version 0.7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
30.9 Version 0.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
30.10 Version 0.6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
30.11 Version 0.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
30.12 Version 0.5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
30.13 Version 0.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
30.14 Version 0.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
30.15 Version 0.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
30.16 Version 0.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
30.17 Version 0.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
30.18 Version 0.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
30.19 Version 0.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
vi
31 License 281
31.1 Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
31.2 General License Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . 282
31.3 Flask License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
31.4 Flask Artwork License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Index 285