首页 > 代码库 > 网站后端_Python+Flask.0007.FLASK构造跳转之301跳转与302重定向?

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

构造地址:


说明: 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(‘/<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



本文出自 “@Can Up and No BB...” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1866215

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