1. 程式人生 > >跟我學Flask(四)-url傳參與重定向

跟我學Flask(四)-url傳參與重定向

一、URL傳參

有時我們需要將同一類 URL 對映到同一個檢視函式處理,比如:使用同一個檢視函式來顯示不同使用者的個人資訊。

傳入引數:通過url地址給檢視函式傳入引數;

語法:<>,括號裡面儲存的是引數,可以返回字串/數值

1.1、預設的資料型別為string,string相容數值

# 路由傳遞引數
@app.route('/user/<user_id>')
def user_info(user_id):
    return 'hello %s' % user_id

1.2、可以限制資料型別/int/float,<>是通過轉換器實現,Flask有6種預設轉換器

# 路由傳遞引數
@app.route('/user/<int:user_id>')
def user_info(user_id):
    return 'hello %d' % user_id
    
Flask的預設轉換器:DEFAULT_CONVERTERS = {

‘default’: UnicodeConverter,

‘string’: UnicodeConverter,

‘any’: AnyConverter,

‘path’: PathConverter,

‘int’: IntegerConverter,

‘float’: FloatConverter,

‘uuid’: UUIDConverter,}

1.3、自定義轉換器

轉換器作用:限制url位址列中的資料型別。

需求:想要限制url位址列中的資料長度

自定義轉換器實現:正則表示式是通過函式傳參的形式實現,程式碼擴充套件性很強。

from flask import Flask
from werkzeug.routing import BaseConverter

app=Flask(__name__)

# 自定義轉換器類
class RegexConverter(BaseConverter):

    def __init__(self,map,*args):
        super(RegexConverter,
self).__init__(map) print(map) self.regex = args[0] print(args[0]) # 新增自定義的轉換器給預設轉換器的字典容器 app.url_map.converters['re'] = RegexConverter @app.route('/regex/<re("[a-z]{6}"):text>') def hello(text): return 'hello %s' % text if __name__ == '__main__': # print(app.url_map) # app.run(debug=True) app.run(debug=True)

二、重定向

# 匯入flask內建的函式redirect
from flask import Flask,redirect,url_for

app = Flask(__name__)


# 重定向redirect:接收引數為location,具體的url地址
# 重新發送網路請求,跳轉頁面
# 當專案路徑(url)或檔案發生變化的情況下,可以使用重定向。
@app.route('/')
def index():
    url = 'http://www.12.cn'
    # 重定向到傳智播客
    return redirect(url)

# url_for反向解析:接收的引數endpoint,檢視函式名
@app.route('/for')
def demo_url_for():
    return redirect(url_for('index'))


if __name__ == '__main__':
    print(app.url_map)
    app.run(debug=True)