程序初始化
From flask import Flask
app = Flask(__name__) # 通过__name__找到程序根目录
路由和视图函数
@app.route('/')
def index():
return '<h1>hello</h1>'
- 这里使用了python 的装饰器函数,用来修改函数行为,具体可以google
- index返回'响应',客户端接收的内容 ---视图函数
- 可以创建动态名字,Flask 支持路由中使用int float path(字符串)类型,'\'不会被视为分隔符,当作动态片段一部分
@app.route('/user/<name>'):
def user(name):
return '<h1>hello,%s</h1>'%name
启动服务
if __name__ = '__main__':
app.run(debug=True)
debug = True #可以激活调试器和重载程序,而且Flask的web服务器不适合生产环境使用,非常慢
请求 - 响应
程序和请求上下文
FLask 有2种上下文,程序上下文和请求上下文
Tables | Are | Cool |
---|---|---|
current_app | 程序上下文 | 当前激活程序的实例 |
g | 程序上下文 | 处理请求时用作临时存储的对象.每次请求都会重置这个变量 |
request | 请求上下文 | 请求对象,封装客户端发出的http请求内容 |
session | 请求上下文 | 用户会话,存储请求之间需要记住的值的字典 |
请求调度
程序收到客户端发来的请求,找到处理该请求的视图函数,Flask会到URL映射中查找请求的URL
- URL映射是 URL和视图函数之间的对应关系
- Flask使用app.route修饰器,或者非修饰器形式的app.add_url_rule()生成映射
请求钩子
处理请求之前或者之后的执行代码,FLask提供注册通用函数的功能,Flask支持4种钩子
- before_first_request 处理第一个请求之前运行
- before_request 每次请求之前运行
- after_request 如果没有异常抛出,每次请求之后运行
- teardown_request: 即使有异常抛出,每次请求之后运行
响应
响应一般是字符串-HTML页面 和 状态码
- 成功处理响应 : 200
- 请求无效 : 404
- 重定向 : 302
常用的函数
- 创建响应对象 - make_response()
- 重定向 - redirect()
- 处理错误 - abort(404)
FLask 扩展
Flask-Script - 支持命令行选项