在 Flask 中,蓝图(Blueprint)是一种机制,允许你将应用程序拆分成多个模块化的部分。每个蓝图都可以包含路由、模板、静态文件等,从而使得应用程序更易于管理和扩展。以下是使用蓝图实现模块化应用的基本步骤:

1. 创建蓝图:

在你的应用中,创建一个或多个蓝图。蓝图通常包含在一个单独的 Python 文件中。例如,创建一个名为 auth 的蓝图:
# auth.py

from flask import Blueprint, render_template

auth_bp = Blueprint('auth', __name__)

@auth_bp.route('/login')
def login():
    return render_template('auth/login.html')

@auth_bp.route('/logout')
def logout():
    return 'Logout Page'

# 可以在此添加更多的路由和视图函数

2. 注册蓝图:

在你的应用主文件中,将蓝图注册到应用上。这通常发生在应用实例创建之后:
# app.py

from flask import Flask
from auth import auth_bp  # 导入蓝图对象

app = Flask(__name__)

# 注册蓝图
app.register_blueprint(auth_bp, url_prefix='/auth')

3. 使用蓝图中的路由和视图:

蓝图注册后,你可以通过蓝图的前缀访问其中定义的路由。在模板或其他视图中,可以使用 url_for 函数引用蓝图中的路由:
<!-- templates/index.html -->

<a href="{{ url_for('auth.login') }}">Login</a>
<a href="{{ url_for('auth.logout') }}">Logout</a>

4. 静态文件和模板:

在蓝图目录中,你可以创建一个名为 static 和一个名为 templates 的文件夹,用于存放蓝图中的静态文件和模板。Flask 会自动搜索这些目录。