Flask 是一个使用 Python 编写的轻量级 Web 应用框架,依赖于两个外部库:WSGI 工具箱采用 Werkzeug;模板引擎则使用 Jinja2 。
接下来简单介绍一下相关内容,一步步看看如何使用。
简介
Flask 是基于 werkzeug 实现的,这是一个基于 wsgi 协议实现的底层函数库,也就是实现了基本的 HTTP 请求和处理,实际上我们都能在 werkzeug 的基础上来实现自己的 Web 框架。
安装
可以直接从 github - flask 下载源码,或者通过 pip 方式安装。
当然也可以通过源码进行安装,实际上除了上述的两个核心的功能库之外,还依赖 click 库,用来简化命令行处理;itsdangerous 用来处理 cookie 相关信息。
Hello World !
安装完成之后可以通过如下方式进行测试,下面是一个简单的示例。
然后浏览器访问 http://localhost:5000 或者 curl http://127.1:5000 即可,最终返回如下内容。
Flask 配置
在每个 Flask 对象中,都有一个 config 属性,用来保存配置;而 config 实际上是继承于字典,源码在 config.py 中实现。
如果要修改配置项,可以直接通过如下的方式进行修改。
其中,有一部分的配置项是 Flask 所使用的,例如,SECRET_KEY 是 Flask 中比较重要的一个配置值,包括 Session、Cookies 以及一些第三方扩展都会用到该值,应该尽可能设置为一个很难猜到的随机值。通常操作系统可以基于一个密码随机生成器来生成漂亮的随机值,该值可以用来做密钥。
另外,如果需要,还可以自己配置一些应用中将会用到的配置,从而可以全局访问。
Blueprint
通过蓝图 (blueprint) 可以把一个应用分解为一个蓝图的集合,一个项目可以实例化一个应用对象,初始化几个扩展,并注册一集合的蓝图,从而方便管理。
如下,是一个简单的示例,其中目录结构如下所示。
如下是各个文件的内容,可以对号入座。
如上是 requirements.txt 文件配置,主要作用是记录需要的依赖包,新环境部署时安装如下依赖包即可,pip install -r requirements.txt 。
三方插件
Flask 一个好处就是其灵活性,很多功能都可以直接通过三方的插件进行扩展,在此列举一些比较常见的一些插件。
Flask-WTF
这个是对 WTForms 的封装,包括了 CSRF、文件上传、以及 reCAPTCHA,详细描述可以参考 Flask-WTF 中文文档,也可以查看 Flask-WTF 英文文档。
直接通过如下的方式进行安装。
也可以从 Github - lepture/flask-wtf 上下载,通过源码安装。
Flask-Login
这是一个登陆认证使用的基本插件,可以参考 Flask-Login 中文文档,也可以查看 Flask-Login 英文文档。直接通过如下的方式进行安装。
可以从 Github - maxcountryman/flask-login 上下载。
Flask-bcrypt
这个实际上只是简单的对 bcrypt 的封装,而 bcrypt 依赖 cffi 依赖 pycparser,这个通常用在用户的加密认证。
参考
三个模块的英文文档可以参考 flask.pocoo.org、werkzeug.pocoo.org、jinja.pocoo.org,而源码可以直接查看 github - flask、github - werkzeug、github - jinja;中文资料可以参考 Flask 中文文档、Werkzeug 文档概览、欢迎来到 Jinja2 。
一个不错的示例,比较适合大型项目的设计参考,Flask 代码模式 ,还有一个就是 欢迎来到 Flask 的世界 。