购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 构造URL

在3.3节中执行redirect("/login")函数,让页面跳转到登录页面,这里是直接把/login这个URL硬编码进去的,对于项目健壮性不太友好,更好的方式应该是通过url_for函数来动态地构造URL。url_for接收视图函数名作为第1个参数,以及其他URL定义时的参数,如果还添加了其他参数,则会添加到URL的后面作为查询字符串参数。这里以博客详情的URL为例来讲解url_for函数的使用,示例代码如下。

    @app.route("/blog/<int:blog_id>")
    def blog_detail(blog_id):
       return "您查找的博客id为:%s"%blog_id
     
    @app.route("/urlfor")
    def get_url_for():
       url = url_for("blog_detail",blog_id=2,user="admin")
       return url

在get_url_for视图函数中使用了url_for函数,把函数名blog_detail作为第1个参数,因为blog_detail的URL需要接收一个blog_id参数,因此把blog_id也传给了url_for函数。除此之外,还添加了一个user参数,因为user参数不是必需的,所以在构建成URL后,会把user作为查询字符串参数拼接上去。在浏览器中访问/urlfor,可以看到如图3-13所示的效果。

图3-13 访问/urlfor

相比在代码中硬编码URL,使用url_for函数来动态地构建URL有以下两点好处。

URL是对外的,可能会经常变化,但是视图函数不会经常变化。如果直接把URL硬编码,若后期URL改变了,凡是硬编码了这个URL的代码都需要修改,费时费力。

URL在网络之间通信的过程中,需要把一些特殊字符包括中文等进行编码,如URL中包含了特殊字符,用url_for函数会自动进行编码,省时省力。 nrVRqRac6DdsUJcxbf4mvsK+SyK/apTYoMkGA3p799nDk3Ixcm7l35coOVAgYSNi

点击中间区域
呼出菜单
上一章
目录
下一章
×