構造地址:


說明: 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