python flask 定义302状态和重定向

首先,我们来讨论下什么叫重定向,什么又叫临时重定向(302),什么又叫永久重定向(301)

重定向:我们在浏览器上输入网址的时候,浏览器解析我们的网址,并且跳转到这个网址里,重定向就是,在浏览器跳转到这个页面后,因为设置了重定向,所以,我们的链接是我们输入的链接,但是,页面就变成了重新指向的链接的页面.

临时重定向:我们输入的链接还在使用,然后在当前在重新指向一个新的链接

永久重定向:我们输入的链接已经没有在使用了,然后在当前在重新指向一个新的链接

永久和临时的区别是:如果永久的重定向时,浏览器就不会记录我们输入的链接,而是记录我们重定向的链接,因为浏览器认为我们输入的链接不能使用了,如果是临时重定向时,浏览器会记录我们输入的链接,而不会记录我们重定向的链接,因为浏览器在状态码是302时会认为我们输入的链接还能使用。

使用场景:假设我们某个页面需要登陆才能访问,如果用户没有登陆的时候我们给他跳转到登陆页面,我们可以在代码上判断用户是不是登陆(比如验证token),如果用户没有登陆的时候,就给他重定向到登陆页面

扫描二维码关注公众号,回复: 14207932 查看本文章

下面,我们看下如何在代码层面上实现重定向吧,

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()

今天的分享就到这里 ,路过的可以点赞收藏哦,加油

猜你喜欢

转载自blog.csdn.net/m0_58002043/article/details/121284005