框架特点:
1. 非常小, 小到可称为微型框架
2. 可扩展, 设计初衷就是不会替开发者做太多决策,支持随时更换或动手实现扩展模块
3. 三依赖, 路由/调试/WSGI(由WERKZEUG提供的WEB服务器网关接口实现),模版系统(由JINJA2实现),签名(由ITSDANGEROUS实现)
快速安装:
pip install flask
快速入门:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: # """ # 说明: 导入公共模块 from flask import Flask # 说明: 导入其它模块 app = Flask(__name__) @app.route('/') def hello_word(): return 'Hello Word!' if __name__ == '__main__': app.run(host='0.0.0.0', port=9000)
1. # -*- coding: utf-8 -*-用于声明源文件编码,PY解释器会以此编码解析源码文件,没有特殊情况下强制设置为utf-8
2. from flask import Flask用于引入Flask类,Flask类实现了一个WSGI应用
3. app = Flask(__name__),通过Flask接收包或模块名作为参数让flask创建一个WSGI实例,flask通过flask.helpers.get_root_path(模块名/包名)来获取程序的根目录,以便获取静态/模版/配置等文件
4. @app.route('/')装饰器将url和视图函数的关系保存到app.url_map映射表中,由路由来根据映射表对号入座调用视图函数
5. if __name__ == '__main__': 用于保证其它模块导入此行下面的代码块儿不会被执行
6. app.run(host='0.0.0.0', port=9000)用于设置启动参数,默认监听127.0.0.1的5000端口,可通过指定host/port来设置监听地址和端口,服务启动后会调用werkzeug.serving.run_simple进入轮询,默认使用werkzeug.serving.BaseWSGIServer处理请求,当我们访问http://127.0.0.1:9000/时,路由通过app.url_map找到注册'/'这个url模式以及关联的视图函数,由于函数返回'Hello Word!',状态码为200,如果访问一个不存在的路径,则在app.url_map找不到对应的模式,就会向浏览器返回'Not Found',状态码为404
注意: 默认的app.run的启动方式只用于调试,不要用于生产环境,生产环境应该换为Gunicorn或uWSGI,其实WERKZEUG还自带werkzeug.serving.ThreadedWSGIServer多线程类和werkzeug.serving.ForkingWSGIServer多进程类