1、Flask简介
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
2、Flask的依赖模块
pipreqs ./ --encoding=utf-8
生成的requirements.txt内容如下:
blinker==1.4 Jinja2==2.10 Click==7.0 itsdangerous==1.1.0 Werkzeug==0.14.1 Flask==1.0.2 setuptools==39.0.1 pyOpenSSL==18.0.0 python-dotenv==0.10.0
3、Flask依赖模块介绍
3.1、Blinker
官方文档: Blinker Documentation
Blinker的使用:http://python.jobbole.com/85554/
Blinker 是一个基于Python的强大的信号库,它既支持简单的对象到对象通信,也支持针对多个对象进行组播。Flask的信号机制就是基于它建立的。
Blinker的内核虽然小巧,但是功能却非常强大,它支持以下特性:
- 支持注册全局命名信号
- 支持匿名信号
- 支持自定义命名信号
- 支持与接收者之间的持久连接与短暂连接
- 通过弱引用实现与接收者之间的自动断开连接
- 支持发送任意大小的数据
- 支持收集信号接收者的返回值
- 线程安全
3.2、jinja2
参考链接:https://www.cnblogs.com/dachenzi/p/8242713.html
jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。
jinja2之所以被广泛使用是因为它具有以下优点:
- 相对于Template,jinja2更加灵活,它提供了控制结构,表达式和继承等。
- 相对于Mako,jinja2仅有控制结构,不允许在模板中编写太多的业务逻辑。
- 相对于Django模板,jinja2性能更好。
- Jinja2模板的可读性很棒。
3.3、Click
官方文档:https://click.palletsprojects.com/en/7.x/
参考链接:https://www.cnblogs.com/dachenzi/p/7995539.html
click模块是Flask的作者开发的一个第三方模块,用于快速创建命令行。它的作用与Python标准库的argparse相同,但是,使用起来更简单。
3.4、itsdangerous
官方文档:https://pythonhosted.org/itsdangerous/
参考链接:https://zhyannan.gitee.io/zyannan.blog/2017/09/25/2017-9-25-itsdangerous/#more
如果你想向不可信的环境发送数据,但又担心数据被别人利用,就可以使用 itsdangerous
来加密签名你的数据。接收者可以破译内容,来看看你的包裹里有什么,但他们没办法修改你的内容,除非他们也有你的密钥。
itsdangerous内部默认使用了HMAC和SHA1来签名,基于 Django 签名模块。它也支持JSON Web 签名 (JWS)。这个库采用BSD协议,由Armin Ronacher编写,而大部分设计与实现的版权归Simon Willison和其他的把这个库变为现实的Django爱好者们。
3.5、Werkzeug
官方文档:http://werkzeug.pocoo.org/
中文文档:https://werkzeug-docs-cn.readthedocs.io/zh_CN/latest/
参考链接:
Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的东西,例如 Request,Response 等等。
4、Flask简单使用
定义url:/index/,访问该url返回hello。
4.1、源码
from flask import Flask,Response app = Flask(__name__) @app.route("/index/") def index(): return Response("hello") if __name__ == "__main__": app.run()
4.2、浏览器访问