跟我學Flask(四)-url傳參與重定向
阿新 • • 發佈:2018-11-17
一、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)