烧瓶。函数名称需要与app.route路径匹配吗?

Jac*_*All 2 python flask

函数名称(adhoc_test)是否需要与app.route路径匹配?

from flask import request

@app.route('/adhoc_test/')
def adhoc_test():
Run Code Online (Sandbox Code Playgroud)

我不太确定内部结构,但是当请求 adhoc_test 路由/路径时,到底执行什么函数(同名)?

Dee*_*ace 6

不,函数的名称并不重要(即它不必与路由匹配),只要您没有多个具有相同名称的函数(那么在运行服务器时您将收到实际错误)

AssertionError: View function mapping is overwriting an existing endpoint function
Run Code Online (Sandbox Code Playgroud)

但到底是什么在执行该函数

它比这更复杂一些,但最终 Flask 会保留一个字典作为“端点”(函数名称)和函数对象之间的映射(这就是函数名称必须唯一的原因):

self.view_functions[endpoint] = view_func
Run Code Online (Sandbox Code Playgroud)

它还保留了一个url_map将路由映射到函数的方法:

Map([<Rule '/route_a' (OPTIONS, GET, HEAD) -> func_a>,
     <Rule '/route_b' (OPTIONS, GET, HEAD) -> func_b>,
     <Rule '/static/<filename>' (OPTIONS, GET, HEAD) -> static>])
{}
Run Code Online (Sandbox Code Playgroud)