2.1初始化
from flask import Flask app = Flask(__name__)
2.2路由和视图函数
@app.route('/') def index(): return '<p>Hello World<p>'
2.3启动服务器
if __name__ == '__main__': app.run(debug=True)
2.4一个完整的程序
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return '<p>Hello World<p>' if __name__ == '__main__': app.run(debug=True)
执行该文件后,访问http://127.0.0.1:5000
2.5请求-响应循环
2.5.1 程序和请求上下文
//获取header信息
@app.route('/') def index(): user_agent = request.headers.get('User-Agent') return '<p>Your browser is %s<p>' % user_agent
2.5.2 请求调度
>>> app.url_map Map([<Rule '/' (HEAD, OPTIONS, GET) -> index>, <Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>, <Rule '/user/<name>' (HEAD, OPTIONS, GET) -> user>])
2.5.3 请求钩子
before_first_request 处理第一个请求之前运行
before_request 每次请求之前运行
after_request 如果没有异常抛出,每次请求之后运行
teardown_request 即使有异常抛出,也在请求之后运行
不详
2.5.4 响应
// 返回400 @app.route('/') def index(): return '<h1>Bad Request</h1>', 400
// 设置响应,响应时设置浏览器cookie @app.route('/res') def res(): response = make_response('<h1>This document carries a cookie!</h1>') response.set_cookie('answer', '42') return response
// 重定向链接 @app.route('/red') def red(): return redirect('http://www.baidu.com')
// 不满足条件主动抛出404 app.route('/user_id/<user_id>') def get_user(user_id): re_user = load_user(user_id) if not re_user: abort(404) return '<h1> hello, %s</h1>' % re_user def load_user(user_id): re_id = str(user_id) re = {"1": "user_a", "2": "user_b"} return re.get(re_id)
2.6 Flask扩展
安装扩展
(venv) $ pip install flask-script
导入扩展
from flask.ext.script import Manager manager = Manager(app)
if __name__ == '__main__':
manager.run()
使用扩展
(venv) $ python hello.py runserver --help