本文主要分析了 Flask 的基本工作流程,由于处理 URL 请求与路由规则强相关,因此先介绍了Flask是怎样建立路由规则,然后详细分析了 Flask 的基本工作流程。
建立路由规则
客户端把请求发给 Web 服务器,Web 服务器再把请求发送给程序实例,程序实例需要知道每个 URL 请求运行哪些代码,所以保存了一个URL到处理函数的映射关系,处理 URL 和函数之间关系的程序称为路由。
Flask 建立路由规则的方法一般通过 @route
装饰器对视图函数进行装饰,例如:
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello world!'
该方法也可以写成
app = Flask(__name__)
def index():
return 'Hello world!'
app.add_url_rule('/', 'hello', hello)
建立路由规则时,Flask 究竟做了什么,我们来看看 route
函数:
def route(self, rule, **options):
def decorator(f):
endpoint = options.pop('endpoint', None)
self.add_url_rule(rule, endpoint, f, **options)
return f
return decorator
route
函数是一个装饰器,获取参数 options
中的 endpoint
后,调用 add_url_rule
添加路由规则,返回被装饰的函数,这也验证了上面两种方法等价的说法。add_url_rule
是怎样添加路由规则的?
```python
def add_url_rule(self, rule, endpoint=None, view_func=None, **options):
…
rule = self.url_rule_class(rule, methods=methods, **options)
rule.provide_automatic_options = provide_automatic_options
Read More