框架特点:

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多进程类