一、Flask简单介绍
1. Flask定义
Flask依赖两个外部库:Werkzeug 和 Jinja2。Werkzeug是一个WSGI(在web应用和多种服务器之间的标准Python接口)工具集。Jinja2负责渲染模板。
对于Werkzeug本质是socket服务端,其用于接收http请求并对请求进行预处理,然后触发flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
Flask的"微",不代表Flask功能不强,微型框架的目标是保持核心简单而又可扩展。一切都由开发者自主定制使用。默认情况下,Flask 不包含数据库抽象层、表单验证或者其他已有的库可以处理的东西。 然而, Flask 通过扩展为你的应用添加这些功能,就如同这些功能是 Flask 生的一样。 大量的扩展用以支持数据库整合、表单验证、上传处理和各种开放验证等等。Flask 可能是 “微小”的,但它已经为满足您的各种生产需要做出了充足的准备。
2. 配置和惯例
按照惯例, 模板和静态文件存放在应用的 Python 源代码树的子目录中,名称分别为 templates和 static
。惯例是可以改变的,但是你大可不必改变。
3. Flask、Django、tornado比较
-
Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架
-
Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架
-
Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架
4. Flask、Django、tornado优缺点
Django 通常用于大型Web应用由于内置组件足够强大所以使用Django开发可以一气呵成
Tornado 通常用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批
Flask 通常应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用
Django 优点是大而全,缺点也就暴露出来了,这么多的资源一次性全部加载,肯定会造成一部分的资源浪费
Tornado 优点是异步,缺点是干净,连个Session都不支持
Flask 优点是精悍简单,缺点是不稳定,若Flask版本升级,新版flask可能不支持原第三方库版本。
二、Flask安装与使用
1. 安装
pip install Flask
2. 使用
from flask import Flask
# 实例化一个Flask对象
app = Flask(__name__)
# 路由装饰器
@app.route("/main")
def hello_world(): # 视图函数
return "hello world"
if __name__ == '__main__':
# 启动flask项目; 默认端口5000; debug自动重启
app.run(host='0.0.0.0', port=5000, debug=True)