[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 的理想选择。对于复杂的企业级应用,可以通过添加扩展来实现所需功能。

相关推荐
覆东流8 小时前
7.Java数组
java·开发语言·后端
threerocks9 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
JavaPub-rodert9 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
深漂的华哥9 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
why技术11 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端
学习星球11 小时前
Qwik 框架入门实战:从开源项目 Qwik City 开始,用可恢复性替代水合
后端·前端框架·开源·c5全栈
IT_陈寒13 小时前
被Java的final坑惨了,这些细节你可能也忽略了
前端·人工智能·后端
Zadig13 小时前
企业 Agent 总烂在 Demo 里?Zadig 工作流 AI 任务给了一条路
后端·devops
Zadig13 小时前
告别"人肉扛雷":Zadig 用 AI 接管发布前最脏最累的 15 分钟
后端·aiops
Nturmoils14 小时前
向量数据库不该成为新孤岛:KingbaseES 多模融合架构如何减少数据搬运
后端