Flask 變量規(guī)則

2022-08-16 10:36 更新

通過向規(guī)則參數(shù)添加變量部分,可以動(dòng)態(tài)構(gòu)建URL。

此變量部分標(biāo)記為<variable-name> 。

它作為關(guān)鍵字參數(shù)傳遞給與規(guī)則相關(guān)聯(lián)的函數(shù)。


在以下示例中,route()裝飾器的規(guī)則參數(shù)包含附加到URL '/hello' <name>。 

因此,如果在瀏覽器中輸入http://localhost:5000/hello/w3cschool作為URL,則'w3cschool'將作為參數(shù)提供給 hello()函數(shù)。

from flask import Flask
app = Flask(__name__)

@app.route('/hello/<name>')
def hello_name(name):
   return 'Hello %s!' % name

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

將上述腳本保存為hello.py并從Python shell運(yùn)行它。

接下來,打開瀏覽器并輸入U(xiǎn)RL http:// localhost:5000/hello/w3cschool。

以下輸出將顯示在瀏覽器中:

Hello w3cschool!

除了默認(rèn)字符串變量部分之外,還可以使用以下轉(zhuǎn)換器構(gòu)建規(guī)則:

序號(hào) 轉(zhuǎn)換器 描述
1

int

接受整數(shù)

2

float

對(duì)于浮點(diǎn)值

3

path

接受用作目錄分隔符的斜杠

在下面的代碼中,使用了所有這些構(gòu)造函數(shù):

from flask import Flask
app = Flask(__name__)

@app.route('/blog/<int:postID>')
def show_blog(postID):
   return 'Blog Number %d' % postID

@app.route('/rev/<float:revNo>')
def revision(revNo):
   return 'Revision Number %f' % revNo

if __name__ == '__main__':
   app.run()

從Python Shell運(yùn)行上面的代碼。訪問瀏覽器中的URL http://localhost:5000/blog/11。

給定的數(shù)字用作show_blog()函數(shù)的參數(shù)。瀏覽器顯示以下輸出:

Blog Number 11

在瀏覽器中輸入此URL - http://localhost:5000/rev/1.1

revision()函數(shù)將浮點(diǎn)數(shù)作為參數(shù)。以下結(jié)果顯示在瀏覽器窗口中:

Revision Number 1.100000

Flask的URL規(guī)則基于Werkzeug的路由模塊。

這確保形成的URL是唯一的,并且基于Apache規(guī)定的先例。

考慮以下腳本中定義的規(guī)則:

from flask import Flask
app = Flask(__name__)

@app.route('/flask')
def hello_flask():
   return 'Hello Flask'

@app.route('/python/')
def hello_python():
   return 'Hello Python'

if __name__ == '__main__':
   app.run()

這兩個(gè)規(guī)則看起來類似,但在第二個(gè)規(guī)則中,使用斜杠(/)。因此,它成為一個(gè)規(guī)范的URL。因此,使用 /python /python/返回相同的輸出。

但是,如果是第一個(gè)規(guī)則,/flask/ URL會(huì)產(chǎn)生“404 Not Found”頁(yè)面。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)