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

3.3 页面重定向

页面重定向,下文简称重定向。重定向在页面中体现的操作是,浏览器会从一个页面自动跳转到另外一个页面。例如,用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此重定向到登录页面。重定向分为永久性重定向和暂时性重定向,以下是相关介绍。

永久性重定向:HTTP的状态码是301,多用于旧网址已被废弃,要转到一个新的网址,确保用户正常的访问。最经典的就是京东网站的案例,在使用www.jd.com域名之前有过许多其他域名,如www.360buy.com、www.jingdong.com,在这两个域名没有被废弃之前,当用户在浏览器中输入这两个域名时,会自动跳转到www.jd.com,因为这两个域名以后要被废弃了,所以在这种情况下应该使用永久性重定向。

暂时性重定向:HTTP的状态码是302,表示页面的暂时性跳转。如访问一个需要权限的网址,但是当前用户没有登录,这时候就应该重定向到登录页面,并且是暂时性的重定向。

在Flask中,重定向是通过flask.redirect(location,code=302)函数来实现的,其中location表示需要重定向到哪个URL,code代表状态码,默认是302,即暂时性重定向。下面用一个简单的案例来说明这个函数的用法。

    from flask import Flask,url_for,redirect
     
    app = Flask(__name__)
     
    @app.route('/login')
    def login():
        return 'login page'
     
    @app.route('/profile')
    def profile():
        name = request.args.get('name')
     
        if not name:
            # 如果没有name,说明没有登录,重定向到登录页面
            return redirect("/login")
        else:
            return name

从以上代码可看出,在访问/profile时,如果没有通过查询字符串的方式传递name参数,那么就会被重定向到/login。如访问/profile?name=admin可以看到,浏览器中显示admin,但是如果直接访问/profile,就会被重定向到/login。读者可自行尝试。 7q5YwTNc5PM5sXmMEyWf69NBC8T+tkTLR0ojLnkcVyUHtNdOxn8DbpIMmbW1bEuf

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