3.4 链接

链接

任何具有多个路由的应用都需要可以连接不同页面的链接,例如导航栏。

在模板中直接编写简单路由的 URL 链接不难,但对于包含可变部分的动态路由,在模板 中构建正确的 URL 就很困难了。而且,直接编写 URL 会对代码中定义的路由产生不必要 的依赖关系。如果重新定义路由,模板中的链接可能会失效。

为了避免这些问题,Flask 提供了 url_for() 辅助函数,它使用应用的 URL 映射中保存的 信息生成 URL。

url_for()函数的简单用法

url_for() 函数最简单的用法是以视图函数名(或者 app.add_url_route() 定义路由时 使用的端点名)作为参数,返回对应的 URL。

例如,在当前版本的 hello.py 应用中

调用url_for('index')得到的结果是 /,即应用的根 URL。

调用 url_for('index', _external=True) 返回的则是绝对地址,在这个示例中是 http://localhost:5000/。

  • 生成连接应用内不同路由的链接时,使用相对地址就足够了。如果要生成 在浏览器之外使用的链接,则必须使用绝对地址,例如在电子邮件中发送 的链接。

url_for()函数生成动态URL

使用 url_for()生成动态 URL 时,将动态部分作为关键字参数传入。

例如,url_for('user', name='john', _external=True) 的返回结果是 http://localhost:5000/user/john。

传给 url_for() 的关键字参数不仅限于动态路由中的参数,非动态的参数也会添加到查询 字符串中。

例如,url_for('user', name='john', page=2, version=1) 的返回结果是

/user/ john?page=2&version=1。

《基于Python的Web应用开发实战(第二版)》

posted @ 2019-01-07 13:12  °❆黄雷❄°  阅读(136)  评论(0编辑  收藏  举报