关于python:flask的.add_url_rule()中的“终点”是什么?

What is the “endpoint” in flask's .add_url_rule()?

考虑以下代码

1
2
3
4
5
6
7
8
9
10
import flask

class API:
    def hello(self):
        return flask.Response('hello', 200)

api = API()
app = flask.Flask(__name__)
app.add_url_rule('/', 'hello', api.hello)
app.run()

/调用GET时,它返回" hello"。

add_url_rule的文档指出:

[add_url_rule] works exactly like the route() decorator.

但是,它至少需要三个参数。 第一个和第三个是可以理解的并且模仿@route()。 第二个是什么(在我的情况下是hello)?

该文档进一步指出,这是

endpoint – the endpoint for the registered URL rule. Flask itself assumes the name of the view function as endpoint

这是什么意思? 为什么URL(/)和调用方法(api.hello)不够?"端点"的作用是什么? 究竟如何使用?


这是路线的名称; 例如,您将在url_for()函数中使用的那个。 端点名称是视图的注册键,这是一个符号名称,您可以通过该符号名称引用应用程序其他部分的路由。

@route()采用相同的参数; 默认值为修饰函数的名称。 在add_url_rule()文档和@route()文档中都对此进行了记录:

  • endpoint – the endpoint for the registered URL rule. Flask itself assumes the name of the view function as endpoint.

(粗体斜体强调我的)。

请注意,文档中的示例试图显示相同的内容:

Basically this example:

1
2
3
@app.route('/')
def index():
    pass

Is equivalent to the following:

1
2
3
def index():
    pass
app.add_url_rule('/', 'index', index)

请注意,第二个参数'index'与函数名称匹配。