Flask框架介绍
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Flask 很轻,花很少的成本就能够开发一个简单的网站。非常适合初学者学习。Flask 框架学会以后,可以考虑学习插件的使用。例如使用 WTForm + Flask-WTForm 来验证表单数据,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制。
BTW:果壳网基于 Flask 开发的
特点
- 轻松掌握
- 灵活扩展
- 免费开源
1. 各个主流框架对比
框架 | 特点 |
---|---|
Django | Django:1个重武器,包含了web开发中常用的功能、组件的框架;(ORM、Session、Form、Admin、分页、中间件、信号、缓存、ContenType…); Django是一个全能型框架。目前 Django 的使用面还是很广的,有学习的价值,但是不建议初学者学习,因为要学习的东西太多了,一下子难以吸收会失去兴趣。当然,Django 的目的是为了让开发者能够 快速 地开发一个网站,它提供了很多模块,其中我最喜欢的就是 admin 模块,http://your.site.com/admin 就进入了网站的后台(内置的哦~)方便地对数据进行操作,等等。。。。因此,如果对 Django 熟悉的话,papapa 一下子就写好一个网站的原型了. |
Tornado | Tornado:2大特性就是异步非阻塞、原生支持WebSocket协议; Tornado。传说中性能高高的框架。Tornado 是一个很好的框架,支持异步处理的功能,这是它的特点,其他框架不支持。另外一点是,Tornado 的设计似乎更注重 RESTful URL。但 Tornado 提供了网站基本需要使用的模块外,剩下的则需要开发者自己进行扩展。例如数据库操作,虽然内置了一个 database 的模块(后来独立出去了,现在叫做 torndb,bdarnell/torndb · GitHub)但是不支持 ORM,快速开发起来还是挺吃力的。如果需要 ORM 支持的话,还需要自己写一层将 SQLAlchemy 和 Tornado 联系起来,而且这里还有一个坑。BTW:知乎就是基础 Tornado 开发的。 |
Flask | flask:功能和性能虽然不及Django和Tornado,但是Flask的第三方开源组件比丰富;http://flask.pocoo.org/extensions/ |
Bottle | Bottle:比较简单;Bottle 和 Flask 都属于轻量级的 Web 框架。但是 Bottle 似乎落寞了。我觉得跟他的 API 设计有关系。个人认为 Bottle 使用起来不那么顺手,因此也用得少。这里不做太多介绍。 |
web2py | web2py。也是很轻的一个框架,使用不多,也不做介绍。 web2py。我看楼上都没有对这个框架做介绍。这个框架是 Google 在 web.py 基础上二次开发而来的,兼容 GAE 。性能据说很高,曾经用他来做自己的主页,感觉也还不错。缺点同样是对扩展支持不太好,需要自己进行扩展 |
|Quixote| Quixote:著名的 豆瓣 就是基于 Quixote 开发的。跟上面几个框架不同,Quixote 的路由会有些特别。另外 Quixote 的性能据说也好。|
总结:小型web应用设计的功能点不多使用Flask; 大型web应用设计的功能点比较多使用的组件也会比较多,使用Django(自带功能多不用去找插件); 如果追求性能可以考虑Tornado;
此处参考借鉴一个处女座的程序猿
链接:(https://blog.csdn.net/qq_41185868/article/details/79846111
2. Flask安装
1.使用pip
命令安装
pip install flask
# 如果下载速度较慢,可以使用下面方法,添加下载网址
pip install flask -i
https://pypi.tuna.tsinghua.edu.cn/simple/
- 使用源码安装
python setup.py install
- 使用虚拟环境按照
- 使用virtualenv
- 使用pipenv
以上三种方法均可以安装flask,推荐使用第一种方式
- 验证flask是否安装成功
import flask flask.__version__ # 1.1.2
3. 第一个Flask程序
from flask import Flask
app = Flask(__name__)
@app.route('/) # 路由设置
def hello_world():
return 'Hello World!
解释
- 参数
__name__
表示Flask应用的主模块或包的名称。Flask使用该参数
确定应用的位置,然后找到应用中其他文件的位置,如
网页中的图片目录,模板目录 - 装饰器
app.route()
表示一个路由配置,即:用户在浏览器输入URL,使用
对应的函数处理其中的业务逻辑(可写多个)
4. 启动服务器
- 步骤1 :设置环境变量
windows :set FLASK_APP=app.py linux :export FLASK_APP=app.py
- 步骤2:flask run 启动内置web服务器
- 如果直接运行
flask run
其默认端口是5000
- 指定ip及端口
或flask run --host=127.0.0.1 --port=8001
其中flask run -h 127.0.0.1 -p 8001
127.0.0.1
代表的是本地,与localhost
含义是一样的
- 如果直接运行
4. 开启调试模式
- 功能:代码修改后服务器自动启动
- 步骤1:设置环境变量
windows:set FLASK_ENV=development
linux:export FLASK_ENV=development # 开发环境
- 步骤2:flask run 启动内置web服务器
启动调试模式
- 方法一
- 直接执行app.py(v1.0以前),
- 方法二
- 步骤1:在文件中添加启动代码
- 步骤2 :python app .py
提示:切勿在生产环境下开始调试模式
如下图是生产品模式:Environment:development
如下图是生产品模式:Environment:production
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'index'
if __name__ =="__main__":
app.run(debug=True)