1. 程式人生 > >Flask框架——給檢視傳引數

Flask框架——給檢視傳引數

如何實現資料互動(通過瀏覽器給介面傳入引數)

要想傳入引數,可以通過一個語法,這個語法就是<>(尖括號)
	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]代表的就是後面的正則表示式。