函数名称(adhoc_test)是否需要与app.route路径匹配?
from flask import request
@app.route('/adhoc_test/')
def adhoc_test():
我不太确定内部结构,但是当请求adhoc_test路由/路径时,究竟是执行什么功能(同名)?
答案 0 :(得分:2)
否,只要您没有多个具有相同名称的功能,该功能的名称就无关紧要(即,它不必与路线匹配)(然后,在运行时会出现实际错误)服务器)
AssertionError: View function mapping is overwriting an existing endpoint function
但是究竟是什么在执行该功能
比这复杂一点,但是到最后,烧瓶将字典保留为“端点”(函数名称)和函数对象之间的映射(这就是函数名称必须为唯一):
self.view_functions[endpoint] = view_func
它还保留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>])
{}
答案 1 :(得分:0)
否,您可以随意命名函数。
很显然,明智地命名函数也很重要,这是主要原因之一:
为该函数指定了一个名称,该名称也用于为 该特定函数,并返回我们要显示的消息 在用户的浏览器中。
这是为什么使用相关函数名称非常方便的示例(使用示例的url _):
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
return 'index'
@app.route('/login')
def login():
return 'login'
@app.route('/user/<username>')
def profile(username):
return '{}\'s profile'.format(username)
with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
print(url_for('login', next='/'))
print(url_for('profile', username='John Doe'))
您可以在Flask's Documentation中阅读此信息的其他详细信息。