Flask
外观
Developer(s) | Armin Ronacher |
---|---|
Initial release | April 1, 2010 |
Repository |
|
Written in | Python |
Engine | |
Operating system | 跨平台 |
Type | Web框架 |
License | BSD许可证 |
Website | palletsprojects |
Flask是一个用Python编写的轻量级Web框架,由Armin Ronacher开发并于2010年首次发布。它基于Werkzeug WSGI工具包和Jinja2模板引擎,被设计为易于使用且高度可扩展的微框架。
特点[编辑 | 编辑源代码]
Flask具有以下主要特点:
- 轻量级:核心功能精简,通过扩展机制添加所需功能
- 灵活性:不强制使用特定项目结构或组件
- 内置开发服务器:方便快速开发和测试
- 集成单元测试支持
- RESTful请求分发
- Jinja2模板引擎
- 安全的Cookie支持(客户端会话)
- 100% WSGI 1.0兼容
安装[编辑 | 编辑源代码]
使用pip安装Flask:
pip install flask
基本用法[编辑 | 编辑源代码]
以下是一个最简单的Flask应用示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
运行此应用后,访问[1](http://localhost:5000/)将显示"Hello, World!"。
路由[编辑 | 编辑源代码]
Flask使用装饰器定义路由:
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'
模板[编辑 | 编辑源代码]
Flask默认使用Jinja2模板引擎。示例模板文件`templates/hello.html`:
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
对应的视图函数:
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
扩展[编辑 | 编辑源代码]
Flask通过扩展添加功能,常用扩展包括:
- Flask-SQLAlchemy:数据库集成
- Flask-WTF:表单处理
- Flask-Login:用户认证
- Flask-RESTful:构建REST API
- Flask-SocketIO:实时Web功能
与Django比较[编辑 | 编辑源代码]
与Django相比,Flask:
- 更轻量级,适合小型项目和微服务
- 提供更多选择自由,不强制使用特定组件
- 学习曲线更平缓
- 需要手动集成更多功能(通过扩展)
应用场景[编辑 | 编辑源代码]
Flask适合以下场景:
- 小型Web应用和API服务
- 快速原型开发
- 微服务架构中的服务组件
- 需要高度定制化的项目
- 教育目的(学习Web开发基础)
实际案例[编辑 | 编辑源代码]
许多知名公司使用Flask构建服务,包括:
- Netflix(部分内部工具)
- Airbnb(部分API)
- Lyft(部分后台服务)
- Reddit(早期版本)
- MIT(在线课程平台)
学习资源[编辑 | 编辑源代码]
- 官方文档
- 《Flask Web开发实战》
- 《Flask入门教程》
- Flask Girls教程(与Django Girls类似)