Skip to content

app.py 里的路由在做什么

首页不是直接返回 index.html

来自 app.py 当前 1016–1020 行:

py
@app.route('/')
def index():
    if not current_user_id():
        return send_from_directory('static', 'login.html')
    return send_from_directory('static', 'projects.html')
text
@app.route('/')
↑          ↑
告诉 Flask   用户访问网站根地址时,运行下面的函数

def index():
↑   ↑
定义函数  入口函数名

if not current_user_id():
↑  ↑
如果 没有当前登录用户

return send_from_directory('static', 'login.html')
↑      ↑               ↑
立刻返回  从文件夹发送文件       登录页面

如果用户已经登录,函数不会进入 if,会继续最后一行,返回项目列表页。这就是条件分支的真实用途。

动态地址

py
@app.route('/workspace/<project_id>')
def workspace_page(project_id):

尖括号里的 project_id 是地址里会变化的部分。访问 /workspace/abc123 时,函数参数 project_id 得到 'abc123'

一个路由可以接收多个方法

py
@app.route('/api/canvas-v2', methods=['GET', 'POST'])
@login_required
def canvas_v2_collection():
    if request.method == 'GET':
        return _canvas_v2_list()
    return _canvas_v2_create()

先经过 login_required 检查登录;GET 读取画布列表,POST 创建画布。相同地址用不同 HTTP 方法表达不同动作。

自己在仓库找三条路由

  1. 在 GitHub 打开 app.py
  2. / 聚焦仓库内搜索,或在文件中按 ⌘ + F
  3. 搜索 @app.route('/api/auth/login',记录它允许的方法。
  4. 搜索 @app.route('/api/upload',找它调用的函数名。
  5. 搜索 @app.route('/api/projects',比较集合地址和带 project_id 的地址。
/workspace/<project_id> 里的动态参数是固定文字吗?

答案:不是。它会把真实地址中的那一段交给函数。

写给想驾驭 AI,而不只是依赖 AI 的 Vibe Coder。