flask学习之 网页跳转与重定向

本文介绍了Flask框架中处理网页跳转和重定向的概念,包括永久重定向(301状态码)和暂时重定向(302状态码)。通过示例代码展示了如何使用Flask的redirect和url_for函数实现页面间的跳转。在示例中,当访问'/profile/'且无'name'参数时,应用会重定向到登录页面。建议在重定向时使用url_for以避免路径硬编码,提高代码可维护性。
摘要由CSDN通过智能技术生成
概念
  • 网页跳转:
    常见的场景,网页A中有个链接B,通过点链接B,可以跳转到网页B
  • 重定向:
    访问一个网页时,如果没有满足某些条件,可以重新定向到另一个网页
重定向
  • 永久重定向
    永久性重定向:http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入www.jingdong.com的时候,会被重定向到www.jd.com,因为jingdong.com这个网址已经被废弃了,被改成jd.com,所以这种情况下应该用永久重定向。
  • 暂时重定向
    暂时性重定向:http的状态码是302,表示页面的暂时性跳转。比如访问一个需要权限的网址,如果当前用户没有登录,应该重定向到登录页面,这种情况下,应该用暂时性重定向。
from flask import Flask,request,redirect
app = Flask(__name__)

@app.route('/')
def login():
    return 'login'

@app.route('/profile/')
def profile():
    name = request.args.get('name')
    # 尝试找到name,如果没有拿到就跳转到根目录
    if name:
        return name
    else:
        return redirect('/')

if __name__ == '__main__':
    app.run(debug=True)

此时点开url,
在根目录下加/profile/此时没有name,所以会重定向到/目录
在这里插入图片描述
在这里插入图片描述
如果是加入:/profile/?name=lcy就不会进行重定向了
在这里插入图片描述
但是,这并未用到url_for 当login不再为/时,代码就出问题了,最好的方案还是通过url_for的方式进行
可以考虑将redirect中的/改为url_for(‘login’),通过函数名重定向而不是直接定向url
代码:

from flask import Flask,request,redirect,url_for
app = Flask(__name__)

@app.route('/')
def login():
    return 'login'

@app.route('/profile/')
def profile():
    name = request.args.get('name')
    if name:
        return name
    else:
        return redirect(url_for('login'))

if __name__ == '__main__':
    app.run(debug=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值