Flask框架——給檢視傳引數
阿新 • • 發佈:2018-11-10
如何實現資料互動(通過瀏覽器給介面傳入引數)
要想傳入引數,可以通過一個語法,這個語法就是<>(尖括號) from flask import Flask app = Flask(__name__) # 傳入引數:通過url地址給檢視函式傳遞引數 # 使用語法:<>,括號裡面儲存的是引數,可以返回字串/數值. #預設的資料型別是字串,注意,str相容數值,我們也可以限制資料型別int/float,(@app.route('/<int:text>') #只能輸入整數) #<>中的實現是通過轉換器實現的。 @app.route('/<text>') def index(text): return 'hello %s '% text if __name__ == '__main__': print(app.url_map) app.run()
轉換器
Flask內建的六種轉換器:
1. 'default' UnicodeConverter
2. 'string' UnicodeConverter
3. 'any' AnyConverter
4. 'path' PathConverter
5. 'int' intConverter
6. 'float' FloatConverter
7. 'uuid' UUIDConverter
轉換器的作用:限制url位址列中的資料型別。
問:如何限制位址列中的資料長度呢?
自定義轉換器
from flask import Flask # 匯入flask內建的基類轉換器 from werkzeug.routing import BaseConverter app = Flask(__name__) # 傳入引數:通過url地址給檢視函式傳遞引數 # 使用語法:<>,是通過轉換器實現的. @app.route('/<text>') def index(text): return 'hello %s '% text # 自定義轉換器 class RegexConverter(BaseConverter): regex = '[a-z]{3}' # 新增自定義的轉換器給預設轉換器的字典容器 app.url_map.converters['re'] = RegexConverter @app.route('/regex/re:<text>') def hello(text): return 'hello %s' %text if __name__ == '__main__': print(app.url_map) app.run() 但是這種定義模式的正則表示式是固定的,擴充套件型不強。 from flask import Flask # 匯入flask內建的基類轉換器 from werkzeug.routing import BaseConverter app = Flask(__name__) # 傳入引數:通過url地址給檢視函式傳遞引數 # 使用語法:<>,是通過轉換器實現的. @app.route('/<text>') def index(text): return 'hello %s '% text # 自定義轉換器 class RegexConverter(BaseConverter): def __init__(self,map,*args): super(RegexConverter, self).__init__(map) self.regex[0] # 新增自定義的轉換器給預設轉換器的字典容器 app.url_map.converters['re'] = RegexConverter @app.route('/regex/re("[a-z]{4}"):<text>') def hello(text): return 'hello %s' %text if __name__ == '__main__': print(app.url_map) app.run() 引數map指的是對映列表,args[0]代表的就是後面的正則表示式。