[python]Flask(介绍+应用)

Flask 是一个轻量级的 Python Web 应用框架,它提供了构建 Web 应用程序所需的核心功能,同时保持简单和灵活的设计理念。

以下是详细介绍:

1. Flask 是什么?

  • 微框架:Flask 被设计为"微框架",提供核心功能但保持简洁,可通过扩展添加其他功能
  • WSGI 工具包:基于 Werkzeug WSGI 工具包
  • 模板引擎:使用 Jinja2 模板引擎
  • 轻量级:核心代码约 5000 行,无强制依赖
  • 灵活:不限制项目结构,开发者可自由组织代码

2. 主要功能

功能 描述
路由系统 URL 到 Python 函数的映射
模板渲染 Jinja2 模板引擎集成
请求处理 处理 HTTP 请求和响应
会话管理 客户端会话支持
错误处理 HTTP 错误处理机制
扩展支持 通过插件扩展功能
测试客户端 内置测试支持
开发服务器 内置开发用 Web 服务器

3. 安装 Flask

bash 复制代码
pip install flask

4. 基础应用示例

示例 1: 基本路由

python 复制代码
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return '首页内容'

@app.route('/about')
def about():
    return '关于我们页面'

if __name__ == '__main__':
    app.run(debug=True)

示例 2: 动态路由和模板

python 复制代码
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/user/<username>')
def show_user(username):
    # 渲染模板并传递参数
    return render_template('user_profile.html', name=username)

if __name__ == '__main__':
    app.run()

创建 templates/user_profile.html:

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <title>用户页面</title>
</head>
<body>
    <h1>你好, {{ name }}!</h1>
</body>
</html>

示例 3: 表单处理

python 复制代码
from flask import Flask, request, redirect, url_for

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        return redirect(url_for('dashboard', user=username))
    return '''
        <form method="post">
            <input type="text" name="username">
            <input type="submit" value="登录">
        </form>
    '''

@app.route('/dashboard/<user>')
def dashboard(user):
    return f'欢迎来到仪表盘, {user}!'

if __name__ == '__main__':
    app.run()

5. 常用扩展

  • 数据库:Flask-SQLAlchemy (ORM)
  • 表单处理:Flask-WTF
  • 用户认证:Flask-Login
  • REST API:Flask-RESTful
  • 邮件发送:Flask-Mail

6. 项目结构示例

bash 复制代码
/myflaskapp
    /venv               # 虚拟环境
    /app
        __init__.py     # 应用工厂
        /templates      # HTML模板
        /static         # CSS/JS/图片
        /routes         # 路由
            home.py
            auth.py
        /models         # 数据模型
            user.py
    config.py           # 配置文件
    requirements.txt    # 依赖列表

7. 进阶使用技巧

  1. 蓝图(Blueprints):模块化组织大型应用
python 复制代码
# auth.py
from flask import Blueprint
auth_bp = Blueprint('auth', __name__)

@auth_bp.route('/login')
def login():
    return "登录页面"

# main.py
from flask import Flask
from .auth import auth_bp

app = Flask(__name__)
app.register_blueprint(auth_bp, url_prefix='/auth')
  1. 配置管理
python 复制代码
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
  1. 错误处理
python 复制代码
@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'), 404

8. Flask 适用场景

  • 小型到中型 Web 应用
  • RESTful API 服务
  • 微服务架构
  • 快速原型开发
  • 教学和初学者项目

9. 与 Django 对比

特性 Flask Django
类型 微框架 全功能框架
学习曲线 平缓 较陡峭
灵活性 中等
内置功能 核心功能 ORM/Admin等
适用规模 中小型项目 大型项目

Flask 的优势在于其简洁性和灵活性,开发者可以根据需求自由组合扩展,而不必遵循固定的项目结构。这使得 Flask 成为快速开发和构建 API 的理想选择。对于复杂的企业级应用,可以通过添加扩展来实现所需功能。

相关推荐
林太白22 分钟前
Rust-连接数据库
前端·后端·rust
bug菌36 分钟前
CAP定理真的是死结?业务系统到底该怎么取舍!
分布式·后端·架构
林太白1 小时前
Rust认识安装
前端·后端·rust
掘金酱1 小时前
🔥 稀土掘金 x Trae 夏日寻宝之旅火热进行ing:做任务赢大疆pocket3、Apple watch等丰富大礼
前端·后端·trae
xiayz1 小时前
引入mapstruct实现类的转换
后端
Java微观世界1 小时前
深入解析:Java中的原码、反码、补码——程序员的二进制必修课
后端
不想说话的麋鹿1 小时前
《NestJS 实战:RBAC 系统管理模块开发 (四)》:用户绑定
前端·后端·全栈
Java水解2 小时前
JavaScript 正则表达式
javascript·后端
前端付豪2 小时前
微信支付风控系统揭秘:交易评分、实时拦截与行为建模全流程实战
前端·后端·架构
深栈解码2 小时前
OpenIM 源码深度解析系列(四):在线状态相关存储结构
后端