页面重定向

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

  • 永久性重定向: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, request

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。读者可自行尝试。