Python+Flask.0007.FLASK构造跳转之301跳转与302重定向

本文介绍如何在Flask框架中使用url_for构造URL,并通过redirect实现重定向功能。详细解释了视图函数中如何生成动态URL以及不同HTTP状态码(如301和302)的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造地址:

说明: FLASK支持通过视图函数及传参来构造URL,而且未来修改URL可一次性修改,且默认构建会转义特殊字符和Unicode数据,这些工作不需要我们自己处理,且不仅支持在上下文中构造而且还支持在模版文件中构造

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

import uuid

from flask import Flask, url_for

# 说明: 导入其它模块

app = Flask(__name__)

@app.route('/instance/')

def index():

    return url_for('index', uuid=uuid.uuid4())

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=9000, debug=True)

说明: flask.url_for接收函数名作为第一个参数,也接收URL规则的变量部分,未知的变量会会添加到URL末尾作为查询参数,需要注意的是构造URL时必须在请求上下文或在程序上下文中,如上是在请求上下文中构造的,如果要在程序上下文中可以在with app.test_request_context():代码块中测试

 

跳转定向:

说明: flask.url_for负责构造URL,而flask.redirect负责重新定向,接收2个参数,第一个是URL地址,第二个参数为code状态码,跳转(301)多用于旧网址在废弃前转向新网址以保证用户的访问,表示永久重定向,而重定向(302)表示页面暂时性的转移,flask.redirect默认就是302零时重定向

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

from flask import Flask, redirect, request

# 说明: 导入其它模块

app = Flask(__name__)

@app.route('/<path:page_name>/')

@app.route('/')

def index(page_name=''):

    print '''

    UserAgent: {}

    Method   : {}

    GetArgs  : {}

    PostArgs : {}

    '''.format(

        request.headers.get('User-Agent'),

        request.method,

        request.args,

        request.form,

    )

    return redirect('http://{0}/{1}'.format('www.newweb.net', page_name), code=301)

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=9000, debug=app.debug)

注意: 如上给视图函数index添加了装饰器,表示两个URL规则都应用到此视图函数,由于所有请求数据运行时都保存在request对象中,所以可以通过打印request对象的方法或属性来获取相关信息,然后301重定向到指定的网页,最后说一点儿debug=app.debug这样使用是因为flask.config.ConfigAttribute在app中做了配置的代理目前存在的默认配置代理有app.debug/app.testing/app.secret_key/app.session_cookie_name/app.permanent_session_lifetime/app.use_x_sendfile/app.logger_name

 

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

 

本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1866215

转载于:https://my.oschina.net/learnbo/blog/863212

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值