页面跳转和重定向
什么是重定向?
重定向在页面上的表现就是浏览器从一个页面自动跳转到另外一个页面。
比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,此时应该重定向到登录页面。
重定向的分类:
永久重定向: http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,一个典型的例子是你输入旧的网址会自动跳转到新的网址,这种情况下应该用永久重定向。
临时重定向: http的状态码是302,表示页面的暂时性跳转。比如访问一个需要权限的网址,如果当前用户没有登录,应该重定向到登录页面,这种情况下,应该用暂时性重定向。
HTTP状态码分类:
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
redirect()
函数实现重定向
在flask中,重定向是通过flask.redirect(url, code=302)
这个方法来实现的,url表示需要重定向到的URL,可以结合url_for()函数来使用,code表示重定向类型状态码,默认是302也即暂时性重定向,可以修改成301来实现永久性重定向。
示例:模拟访问个人中心页面,未携带name参数而重定向到登录页面
from flask import Flask,url_for,request,redirect
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
@app.route('/article/<aid>')
def article_list(aid):
return 'article %s' % aid
@app.route('/login/')
def login():
print(request.form.get('name'))
return 'login'
@app.route('/profile/')
def profile():
name = request.args.get('name')
if name:
return name
else:
return redirect('/login')
if __name__ == '__main__':
app.run(debug=True
文章评论