基本概念
初始化
需要给构造函数传包的名字,此参数是用于决定程序根目录的资源文件的位置。
from flask import Flask
app = Flask(__ name__)
路由和视图
@app.route('/')
def index():
return '<h1>hello,world</h1>'
路由的动态部分:
-
/user/<name>
@app. route('/user/< name>') def user( name): return '<h1> Hello, %s!</ h1>' % name
/user/<int:id> 不符合的url会not found
float
-
path
如果访问地址是 127.0.0.0:5000/https://www.baidu.com,可以匹配地址。
name会是https://www.baidu.com@app. route('/user/<path:name>') def user( name): return '<h1> Hello, %s!</h1>' % name
启动服务器
if __name__ == '__main__':
app.run(debug=True)
获取请求对象 request
request 封装了http请求
Flask 使用上下文临时把某些对象变为全局可访问。
- 请求上下文: request, session(可以存请求的值)
from flask import request @app. route('/') def index(): user_ agent = request.headers.get('User-Agent') return '<p> Your browser is %s</p>' % user_agent
- 程序上下文: current_app, g(每次请求重设)
URL Map
- app.url_map: 能获取路由映射
- 其中会有/static/<filename>,用于访问静态文件
请求的钩子:Flask提供的通用函数
- before_first_request
- before_request
- after_request
- teardown_request
Response
- 200, 请求被成功处理
- 400, 请求无效
@app. route('/') def index(): return '<h1> Bad Request</h1>', 400
- 返回一个值或者一个元祖
- 返回一个response对象
from flask import make_ response app. route('/') def index(): response = make_response('<h1>This document carries a cookie!</h1>') response.set_cookie(' answer', '42') return response
- 重定向 redirect
from flask import redirect @app.route('/') def index(): reture redirect('http://www.abc.com')
Flask扩展
Flask-Script
专为Flask开发的扩展在flask.ext命名空间下