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