目录
示例 2-1 hello.py:一个完整的 Flask 程序
示例 2-2 hello.py:包含动态路由的 Flask 程序
2.1 初始化
所有 Flask 程序都必须创建一个 程序实例 。 Web 服务器使用一种名为 Web 服务器网关接口
( Web Server Gateway Interface , WSGI )的协议,把接收自客户端的所有请求都转交给这
个对象处理。程序实例是 Flask 类的对象,经常使用下述代码创建:
Flask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序
中, Python 的 __name__ 变量就是所需的值
2.2 路由和视图函数
客户端(例如 Web 浏览器)把 请求 发送给 Web 服务器, Web 服务器再把请求发送给 Flask
程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到
Python 函数的映射关系。处理 URL 和函数之间关系的程序称为 路由 。
在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修
饰的函数注册为路由。下面的例子说明了如何使用这个修饰器声明路由:
如果你仔细观察日常所用服务的某些 URL 格式,会发现很多地址中都包含可变部分。例
如, 你 的 Facebook 资 料 页 面 的 地 址 是 http://www.facebook.com/< your-name > , 用 户 名
( your-name )是地址的一部分。 Flask 支持这种形式的 URL ,只需在 route 修饰器中使用特
殊的句法即可。下例定义的路由中就有一部分是动态名字
尖括号中的内容就是动态部分,任何能匹配静态部分的 URL 都会映射到这个路由上。调
用视图函数时, Flask 会将动态部分作为参数传入函数。在这个视图函数中,参数用于生
成针对个人的欢迎消息。
路由中的动态部分默认使用字符串,不过也可使用类型定义。例如,路由 /user/<int:id>
只会匹配动态片段 id 为整数的 URL 。 Flask 支持在路由中使用 int 、 float 和 path 类型。
path 类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。
2.3 启动服务器
程序实例用 run 方法启动 Flask 集成的开发 Web 服务器:
__name__== ' __main__ ' 是 Python 的惯常用法,在这里确保直接执行这个脚本时才启动开发
Web 服务器。如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因
此不会执行 app.run() 。
服务器启动后,会