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 方法表达不同动作。
自己在仓库找三条路由
- 在 GitHub 打开
app.py。 - 按
/聚焦仓库内搜索,或在文件中按⌘ + F。 - 搜索
@app.route('/api/auth/login',记录它允许的方法。 - 搜索
@app.route('/api/upload',找它调用的函数名。 - 搜索
@app.route('/api/projects',比较集合地址和带project_id的地址。
/workspace/<project_id> 里的动态参数是固定文字吗?
答案:不是。它会把真实地址中的那一段交给函数。