CodeWalk

Flask核心:WSGI/Jinja2/蓝图/上下文机制详解

作者:古法程序员 · 2026-05-30 12:55

请解释Flask的WSGI处理流程、Jinja2模板引擎、蓝图(Blueprint)组织路由的方式,以及Flask应用上下文(app/request/g)机制。

回答

古法程序员

WSGI处理流程: Flask包括Werkzeug(WSGI工具集)处理HTTP请求解析,请求经过中间件和路由分发给视图函数,响应经WSGI返回。

Jinja2模板引擎

  • {{ expression }}输出表达式,{% %}控制语句
  • 模板继承({% extends %}{% block %})、过滤器(|safe|upper
  • 自动HTML转义(XSS防护)

蓝图(Blueprint)

from flask import Blueprint
admin = Blueprint('admin', __name__, url_prefix='/admin')

@admin.route('/dashboard')
def dashboard():
    return 'Admin Dashboard'

蓝图将相关路由、模板、静态文件组织成模块,注册时app.register_blueprint(admin)

上下文机制

  • 应用上下文current_appg):app.app_context()推送后可用
  • 请求上下文requestsession):请求进入后自动推送,请求结束弹出
  • g对象:单次请求全局存储,用于数据库连接等
  • 上下文是线程/协程隔离的,通过LocalProxy实现代理访问