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

时间:2019-03-11 13:36:07

标签: python flask

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

from flask import request

@app.route('/adhoc_test/')
def adhoc_test():

我不太确定内部结构,但是当请求adhoc_test路由/路径时,究竟是执行什么功能(同名)?

2 个答案:

答案 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中阅读此信息的其他详细信息。