构造地址:
说明: 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重定向?
原文地址:http://xmdevops.blog.51cto.com/11144840/1866215