Python Flask 快速入门

小飞兽 Python 369 次阅读 2026-07-09

概述

Flask 是 Python 生态中最流行的轻量级 Web 框架之一,它核心简洁但功能可扩展,通过丰富的扩展生态可以实现路由、模板渲染、数据库ORM、身份认证、API 文档生成等完整 Web 应用所需的功能。Flask 的设计理念是"微框架",保持核心功能最小化,通过扩展来添加所需特性。

基础语法

Flask 应用的核心是 app 对象,通过装饰器定义路由和处理函数。请求到达时,Flask 根据 URL 匹配到对应的视图函数,处理后返回响应。

    • app = Flask(__name__):创建 Flask 应用实例。
    • @app.route('/path'):装饰器,将 URL 路径绑定到视图函数。
    • request:请求上下文对象。
    • render_template():使用 Jinja2 渲染 HTML 模板。
    • jsonify():将 Python 对象转换为 JSON 响应。

    完整代码示例+注释

    from flask import Flask, render_template, request, jsonify, abort, redirect, url_for
    from flask_sqlalchemy import SQLAlchemy
    import os
    

    app = Flask(__name__)

    app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev-secret-key')
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    db = SQLAlchemy(app)

    class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    @app.route('/')
    def index():
    return render_template('index.html')

    @app.route('/api/users', methods=['GET', 'POST'])
    def api_users():
    if request.method == 'GET':
    users = User.query.all()
    return jsonify([{'id': u.id, 'username': u.username} for u in users])
    else:
    data = request.get_json()
    user = User(username=data['username'], email=data['email'])
    db.session.add(user)
    db.session.commit()
    return jsonify({'id': user.id}), 201

    @app.errorhandler(404)
    def not_found(error):
    return render_template('404.html'), 404

    if __name__ == '__main__':
    with app.app_context():
    db.create_all()
    app.run(debug=True, host='0.0.0.0', port=5000)

    运行效果

    运行 python app.py 后,Flask 内置的开发服务器会启动在 http://127.0.0.1:5000。访问 / 可以看到首页,访问 /api/users 可以获取用户列表,POST /api/users 可以创建新用户。

    常见问题

    Q1:Flask 和 Django 应该选哪个
    Flask 是微框架,核心简洁,需要的功能自行选择扩展。Django 是全功能框架,内置 ORM、管理后台、用户认证等。

    Q2:Flask 如何处理文件上传
    使用 request.files 获取上传的文件对象,保存时验证文件类型和大小。

    Q3:Flask 如何处理跨域请求
    安装 flask-cors 扩展后,使用 CORS(app) 开启全局跨域支持。

    延伸阅读

    • Flask 官方文档:https://flask.palletsprojects.com/
  • Flask-SQLAlchemy:https://flask-sqlalchemy.palletsprojects.com/
  • 《Flask Web Development》:Miguel Grinberg 的经典 Flask 书籍。