程序收到客户端发来的请求时,要找到处理该请求的视图函数。为了完成这个任务,Flask会在程序的 URL 映射中查找请求的 URL。URL 映射是 URL 和视图函数之间的对应关系。
Flask 使用 app.route 修饰器或者非修饰器形式的 app.add_url_rule() 生成映射。
要想查看 Flask 程序中的 URL 映射是什么样子,我们可以在 Python shell 中检查为 hello.py生成的映射。测试之前,请确保你激活了虚拟环境:
[user@localhost test]$ source venv/bin/activate
(venv)[user@localhost test]$ python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from hello import app
>>> app.url_map
Map([<Rule '/' (HEAD, OPTIONS, GET) -> index>,
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
<Rule '/user/<name>' (HEAD, OPTIONS, GET) -> user>])
>>>
/ 和 /user/<name> 路由在程序中使用 app.route 修饰器定义。/static/<filename> 路由是Flask 添加的特殊路由,用于访问静态文件。
URL 映射中的 HEAD、Options、GET 是请求方法,由路由进行处理。Flask 为每个路由都指定了请求方法,这样不同的请求方法发送到相同的 URL 上时,会使用不同的视图函数进行处理。HEAD 和 OPTIONS 方法由 Flask 自动处理,因此可以这么说,在这个程序中,URL映射中的 3 个路由都使用 GET 方法。