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

相关推荐
期待のcode3 小时前
Spring框架1—Spring的IOC核心技术1
java·后端·spring·架构
Livingbody4 小时前
10分钟完成 ERNIE-4.5-21B-A3B-Thinking深度思考模型部署
后端
胡萝卜的兔5 小时前
go 日志的分装和使用 Zap + lumberjack
开发语言·后端·golang
en-route6 小时前
如何在 Spring Boot 中指定不同的配置文件?
java·spring boot·后端
栀椩6 小时前
springboot配置请求日志
java·spring boot·后端
Swift社区7 小时前
如何解决 Spring Bean 循环依赖
java·后端·spring
爱吃烤鸡翅的酸菜鱼7 小时前
【Redis】常用数据结构之Hash篇:从常用命令到使用场景详解
数据结构·数据库·redis·后端·缓存·哈希算法
bobz9658 小时前
calico vxlan 模式如何实现和公有云一样的 VPC 功能?
后端
面汤放盐8 小时前
互联网“黑话”生存实用指南(100)
java·后端
爱吃烤鸡翅的酸菜鱼9 小时前
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
数据结构·redis·后端·缓存·list