05_Flask重定向_暂时性302_永久性301 ﹏ヽ暗。殇╰゛Y 2023-01-16 09:36 130阅读 0赞 ### 文章目录 ### * * 1.1 什么是重定向? * 1.2 为什么要有重定向? * 1.3 如何使用重定向? * * 1.3.1 暂时性重定向(代码实例) * 1.3.2 永久性重定向(代码实例) ## 1.1 什么是重定向? ## ![36da75a9a1478ba501f76a931e7c1f12.png][] 重定向,顾名思义,就是重新定向到一个新的位置,比如我们在浏览器的页面自动跳转到了另一个页面,又比如访问了一个页面,然后观察网址之后并不是我们输入的网址,这个过程就是重定向完成的。 ## 1.2 为什么要有重定向? ## <table> <thead> <tr> <th>http状态码</th> <th>应用场景</th> <th>优势</th> <th></th> </tr> </thead> <tbody> <tr> <td>暂时性重定向</td> <td>302</td> <td>访问一些需要权限的页面,会自动重定向到权限认证的页面</td> <td>重定向在设计上会提升用户体验</td> </tr> <tr> <td>永久性重定向</td> <td>301</td> <td>废弃原有的网址被访问,会自动重定向到新的网址确保用户访问成功</td> <td>重定向在设计上会提升用户体验,有利于搜索引擎优化</td> </tr> </tbody> </table> **例1**:访问淘宝的时候,你选择了已经购买的商品,但是你并没有登录过淘宝,那么这个时候如果只是提示 “请登录再访问!”,那么相信这种设计是留不住用户的,不如直接为用户重定向到登录页面。 **例2**:比如想废弃原本的网址,那么用户并不知道这个事情,所以用户还是会访问原来的网址,那么就会内部做一个重定向到新启用的网址,重定向的过程会有状态码的返回,搜索引擎捕捉到重定向的代码,有利于搜索引擎优化。 **关键词**:重定向在设计上会提升用户体验 ,有利于搜索引擎优化 ## 1.3 如何使用重定向? ## 首先从`flask`模块中把导入`redirect` from flask import Flask, redirect ### 1.3.1 暂时性重定向(代码实例) ### from flask import Flask, request, redirect app = Flask(__name__) @app.route('/user_info/') def user_info(): name = request.args.get('name') pwd = request.args.get('pwd') if name == 'mark' and pwd == '123': return '{}的信息'.format(name) return redirect('/login/') # 可以换成 return redirect(url_for('login')) @app.route('/login/') def login(): return '这是登录页面' if __name__ == '__main__': app.run(debug=True) *没有通过权限验证的情况* ![image-20210418193519068][] ![image-20210418193540032][] *通过权限验证的情况* ![image-20210418193826293][] \*\*关键词:\*\*暂时性重定向`return redirect('/login/')` 即可实现重定向 ### 1.3.2 永久性重定向(代码实例) ### from flask import Flask, request, redirect app = Flask(__name__) @app.route('/user_info/') def user_info(): name = request.args.get('name') pwd = request.args.get('pwd') if name == 'mark' and pwd == '123': return '{}的信息'.format(name) return redirect('/login/', code=301) # 可以换成 return redirect(url_for('login')) @app.route('/login/') def login(): return '这是登录页面' if __name__ == '__main__': app.run(debug=True) **关键词**:永久性重定向只给`redirect('/login/', code=301)`多加了个`code=301`参数 ![image-20210418194309351][] ![image-20210418194342026][] [36da75a9a1478ba501f76a931e7c1f12.png]: /images/20221022/b80dd5c4b4354fb693e68928f5497eb8.png [image-20210418193519068]: /images/20221022/c3006fa9ca984f1797e37f461b34cab1.png [image-20210418193540032]: /images/20221022/09d5862af54d47b7815ed338da45742f.png [image-20210418193826293]: /images/20221022/e2f3de5de5f04407b4ba4d30090bb736.png [image-20210418194309351]: /images/20221022/cdb095a42b7845098cfbda7bf0573aee.png [image-20210418194342026]: /images/20221022/6576173ab0554f47ac9a0f6fee2e5faa.png
还没有评论,来说两句吧...