Python Flask Web 第一课 —— 基本概念和程序的基本结构

时间:2021-04-15 20:05:04

1. 初始化

所有的 Flask 程序都必须创建一个程序实例,所谓程序实例,在 Flask 框架下就是,Flask 类的实例对象(instance)。

from flask import Flask
app = Flask(__name__)

Web 服务器使用一种名为 Web 服务器网关接口(Web Server Gateway Interface,WSGI)的协议,把接收自客户端(client)的所有请求(request)都转交给这个对象处理。

2. 路由与视图函数


Python Flask Web 第一课 —— 基本概念和程序的基本结构

客户端(例如 web 浏览器)把请求发送给 web 服务器,web 服务器再把请求发送给 flask 程序实例。

程序实例需要知道对每个 url 请求运行哪些代码,所以需要保存一个 URL 与 Python 函数之间的映射关系。处理 URL 和函数之间的关系的程序成为路由

@app.route('/')
def index():
return '<h1>Hello World!</h1>'

而像 index() 这样的函数被称为视图函数(view function),视图函数返回的响应可以是包含 HTML 的简单字符串,也可以是复杂的表单。

如果仔细观察日常所用服务的某些 url 格式,会发现许多地址中都包含可变部分。例如 csdn 上的个人博客地址,http://blog.csdn.net/<用户名>,用户名是地址的一部分。

Flask 也支持这种形式的 URL,

@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s</h1>' % name

尖括号中的内容就是动态可变部分,任何能匹配静态部分的 URL 都会映射到这个路由上,调用视图函数时,Flask 会将动态部分作为参数传入函数(注意, 尖括号中的内容必须和函数的参数名保持一致)。

路由中的动态部分默认使用字符串,不过也可以使用其他类型定义。Flask 支持在路由中使用 int、float 和 path 类型。path 类型也是字符串,但不把斜线视作分隔符,而将其当做动态片段的一部分。

3. 启动服务器

程序实例app使用 run 方法启动 Flask 集成的开发 Web 服务器:

if __name__ == '__main__':
app.run(debug=True)

服务器启动后,会进入轮询,等待并处理请求,直到程序停止,比如按下 ctrl + c 键。换句话说,程序会阻塞在这里app.run()后面的语句不会被执行。