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

相关推荐
无奈何杨5 分钟前
CoolGuard风控节假日完善,QLExpress自定义函数
前端·后端
这里有鱼汤14 分钟前
通过AI狂赚苹果26.6%,这套AI金融交易开源Agent彻底火了
后端·agent
寻月隐君23 分钟前
【Solana 开发实战】轻松搞定链上 IDL:从上传到获取全解析
后端·web3·github
程序员爱钓鱼33 分钟前
Go项目上线部署最佳实践:Docker容器化从入门到进阶
后端·google·go
汪子熙35 分钟前
Visual Studio Code 中排除指定文件夹搜索的最佳实践与实现原理
后端·面试
大P哥阿豪1 小时前
Go defer(二):从汇编的角度理解延迟调用的实现
开发语言·汇编·后端·golang
风象南1 小时前
SpringBoot 与 HTMX:现代 Web 开发的高效组合
java·spring boot·后端
wstcl2 小时前
让你的asp.net网站在调试模式下也能在局域网通过ip访问
后端·tcp/ip·asp.net
ai小鬼头10 小时前
Ollama+OpenWeb最新版0.42+0.3.35一键安装教程,轻松搞定AI模型部署
后端·架构·github
萧曵 丶11 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust