flask学习笔记6 url地址的重新定向

在服务器状态码中,302以及303代表URL地址被重定向了

在flask web框架中,重定向需要使用函数redirect(),如下

@app.route('/redirect')     # 当访问这个url地址的时候,访问请求被重定向
def redir():
    return redirect('http://www.baidu.com', code=303)
    # redirect()接收三个参数,第一个字符串类型的url地址,第二个是状态码(默认是302),第三个是response对象(默认是None)

在实际过程中,重定向用的比较多的地方是访问本站内的地址不存在了,将其重新定向到本站的另一个url地址中去。有两种方法可以办到这一点,第一个是直接在redirect()函数中,将固定的本站url地址传入进入,如下

@app.route('/notFoundPage')
def not_found():
    return '不好意思,服务器维护中,暂停服务'


@app.route('/redirect')     
# 当访问这个url地址的时候,访问请求被重定向到本站的'/notFoundPage'这个url对应的视图函数,由其进行访问处理
def redir():
    return redirect('/notFoundPage')

还有一种办法就是使用url_for()函数

url_for()函数接收传参,第一个参数是视图函数的名称,url_for 能根据这个视图函数的名称反解析到相对应的url地址,再根据这个地址去访问url对应的视图函数。第二个参数是不定长参数,以name='Jack'的形式传入,生成的url地址中会带请求参数。如下

@app.route('/notFoundPage')
def not_found():
    info = request.args.get('address')
    return "Sorry,we don't find the information of %s" % info


@app.route('/urlFor/<string:address>')
def my_url_for(address):
    print(url_for('not_found', info=address))
    # 如果访问的url地址是/urlFor/China,那么输出address的结果是 /notFoundPage?info=China
    return redirect(url_for('not_found', info=address))    # info=address也可以不写,不写的话就是输出正常的url地址

也可以写成这种方式,对于参数的获取是一样的

@app.route('/notFoundPage/<string:info>')
def not_found(info):
    # info = request.args.get('address')
    return "Sorry,we don't find the information of %s" % info    # 直接通过传递参数的形式,而不通过request.args来获取


@app.route('/urlFor/<string:address>')
def my_url_for(address):    # 如果这个时候也和上文中一样打印,则结果是 /notFoundPage/China 原因就在于url_for 是根据视图名称反映射出url地址
    return redirect(url_for('not_found', info=address))



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值