在populair web框架中,基本网页如下所示:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
我是python的新手,我想知道这是如何工作的。我知道@是一个装饰hello
函数的装饰器,但是如何调用底层的hello
函数或甚至知道它存在,因为代码不运行这样的hello函数:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
hello()
当我编码时,我想在我随机接受任何事情之前知道某些事情是如何运作的。我搜索了我,但寻找答案但找不到一个很好的答案。我也看了source code,但我无法找到它是如何工作的
所以现在真正的问题是:如何在普通的python中重新创建类似的东西?所以运行一个函数,而不是先在主代码中调用它。
聚苯乙烯。抱歉我的英语不好,这不是我的主要语言。
答案 0 :(得分:1)
app.route()
会记住网址("/"
)以及与之关联的功能(hello
)。稍后,app.run()
可以查询该关联并调用hello
。
如何在普通的python中重新创建类似的东西?
此程序可能会让您了解如何调用hello()
:
class Flask:
def __init__(self):
self.routes = {}
def route(self, path):
def wrapper(fn):
self.routes[path] = fn
return fn
return wrapper
def run(self):
# Networking code goes here.
# Suppose "/" comes in as a request, then this happens:
self.routes["/"]()
app = Flask()
@app.route("/")
def hello():
print("Inside hello")
return "Hello World!"
app.run()
或者,您可以检查flask
来源:https://github.com/pallets/flask具体而言,此处定义了app.route()
:https://github.com/pallets/flask/blob/0.12.2/flask/app.py#L1054,此处对hello()
的调用如下:{ {3}}