python跳转结构_网站后端_Python+Flask.0007.FLASK构造跳转之301跳转与302重定向?

本文介绍了如何在Flask框架中利用视图函数和参数构造URL,并演示了如何在请求上下文中进行URL构造。同时,讲解了flask.url_for和flask.redirect的用法,包括301和302重定向。通过示例代码展示了如何在视图函数中实现动态URL生成和HTTP状态码控制的重定向操作。
摘要由CSDN通过智能技术生成

构造地址:

说明: FLASK支持通过视图函数及传参来构造URL,而且未来修改URL可一次性修改,且默认构建会转义特殊字符和Unicode数据,这些工作不需要我们自己处理,且不仅支持在上下文中构造而且还支持在模版文件中构造#!/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零时重定向#!/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('//')

@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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值