首先,我们来讨论下什么叫重定向,什么又叫临时重定向(302),什么又叫永久重定向(301)
重定向:我们在浏览器上输入网址的时候,浏览器解析我们的网址,并且跳转到这个网址里,重定向就是,在浏览器跳转到这个页面后,因为设置了重定向,所以,我们的链接是我们输入的链接,但是,页面就变成了重新指向的链接的页面.
临时重定向:我们输入的链接还在使用,然后在当前在重新指向一个新的链接
永久重定向:我们输入的链接已经没有在使用了,然后在当前在重新指向一个新的链接
永久和临时的区别是:如果永久的重定向时,浏览器就不会记录我们输入的链接,而是记录我们重定向的链接,因为浏览器认为我们输入的链接不能使用了,如果是临时重定向时,浏览器会记录我们输入的链接,而不会记录我们重定向的链接,因为浏览器在状态码是302时会认为我们输入的链接还能使用。
使用场景:假设我们某个页面需要登陆才能访问,如果用户没有登陆的时候我们给他跳转到登陆页面,我们可以在代码上判断用户是不是登陆(比如验证token),如果用户没有登陆的时候,就给他重定向到登陆页面
下面,我们看下如何在代码层面上实现重定向吧,
from flask import Flask, render_template_string, abort, render_template, redirect app=Flask(__name__) #实例 @app.route("/user") def hi(): """运行代码""" return redirect("https://blog.csdn.net/m0_58002043?spm=1018.2226.3001.5343") #redirect需要inport引包,这里我给他重定向我的csdn主页 if __name__=="__main__": app.run()
我们还可以设置重定向到其他的视图
from flask import Flask, render_template_string, abort, render_template, redirect, url_for app=Flask(__name__) #实例 @app.route("/user") def a(): """运行代码""" return redirect(url_for("hi")) #redirect和url_for需要inport引包,这里我给他重定向到我下面代码创建的试图函数,括号里的hi是函数名称,而不是设置的url地址 @app.route("/h") def hi(): """运行代码""" return("我时被跳转的页面") if __name__=="__main__": app.run()
同时我们可以在flaks定义是临时重定向和永久重定向
from flask import Flask, render_template_string, abort, render_template, redirect, url_for app=Flask(__name__) #实例 @app.route("/user") def a(): """运行代码""" return redirect(url_for("hi"),code=301) #redirect和url_for需要inport引包,这里我给他重定向到我下面代码创建的试图函数,括号里的hi是函数名称,而不是设置的url地址 #code这个函数是定义我们返回的状态码,我们设置301或着302就能设置是永久还是临时的重定向啦 @app.route("/h") def hi(): """运行代码""" return("我时被跳转的页面") if __name__=="__main__": app.run()