跳转到内容

Flask

来自代码酷
Flask
Developer(s)Armin Ronacher
Initial releaseApril 1, 2010; 15 years ago (2010-04-01)
模板:Infobox software/simple
Repository
  • {{URL|example.com|optional display text}}
Written inPython
Engine
    Operating system跨平台
    TypeWeb框架
    LicenseBSD许可证
    Websitepalletsprojects.com/p/flask/

    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(在线课程平台)

    学习资源[编辑 | 编辑源代码]

    参见[编辑 | 编辑源代码]