Flask框架URL管理操作示例【基于@app.route】
本文實(shí)例講述了Flask框架URL管理操作。分享給大家供大家參考,具體如下:
動(dòng)態(tài)URL規(guī)則
URL規(guī)則可以添加變量部分,也就是將符合同種規(guī)則的URL抽象成一個(gè)URL模式,如“/item/1/”,“/item2/”,假如不抽象,我們就得這樣寫(xiě):
@app.route("/item/1/")
動(dòng)態(tài)URL寫(xiě)法:
@app.route("/item1/<id>/")
def item1(id):
pass
尖括號(hào)的內(nèi)容是動(dòng)態(tài)的,凡是匹配到的/item/前綴的URL都會(huì)被映射到這個(gè)路由上,在內(nèi)部把id作為參數(shù)而獲得。它使用了特殊的字段標(biāo)記,默認(rèn)類型是字符串。如果需要制定參數(shù)類型需要標(biāo)記成這樣的格式,converter有下面幾種:
- string:接收任何沒(méi)有斜杠”/”的文本(默認(rèn))
- int:接收整數(shù)
- float:同int,但是接收浮點(diǎn)數(shù)
- path:和默認(rèn)的相似,但也接收斜杠
- uuid:只接受uuid字符串
- any:可以指定多種路徑,但是需要傳入?yún)?shù)
@app.route("/any(a,b):page_info")
def page_info(page_info):
pass
訪問(wèn)/a/和訪問(wèn)/b/都符合這個(gè)規(guī)則,如果不希望定制子路徑,還可以通過(guò)傳遞參數(shù)的方式,例如:/item1?name=laowang。默認(rèn)使用的是GET方法才能請(qǐng)求,開(kāi)發(fā)者可以通過(guò)request.args.get("name")。如果需設(shè)定使用POST請(qǐng)求,在URL后面,添加methods=["POST"],如app.route("/item1",methods=["POST"]),開(kāi)發(fā)者可以使用 request.form.get('name')獲得傳入的name的值。
唯一URL
Flask的URL規(guī)則基于Werkzeug的路由模塊。這個(gè)模塊背后的思想是基于Apache以及更早的HTTP服務(wù)器的主張,希望保證優(yōu)雅且唯一的URL。
舉個(gè)栗子:
@app.route("/about/")
def about():
...
上述栗子像一個(gè)文件系統(tǒng)中的文件夾,訪問(wèn)一個(gè)結(jié)尾不帶斜線的URL會(huì)被重定向到帶斜線的規(guī)范的URL上去,這樣也有助于避免搜索引擎引同一個(gè)頁(yè)面兩次.
再舉個(gè)栗子:
@app.route("/about")
def about():
...
URL不帶斜線,當(dāng)用戶訪問(wèn)帶斜線的URL”/about/”會(huì)產(chǎn)生一個(gè)Not Found的錯(cuò)誤。
希望本文所述對(duì)大家基于Flask框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Jupyter Notebook的連接密碼 token查詢方式
Pygame實(shí)戰(zhàn)之實(shí)現(xiàn)扎氣球游戲
Python numpy數(shù)組轉(zhuǎn)置與軸變換
Python?Flask實(shí)現(xiàn)后臺(tái)任務(wù)輕松構(gòu)建高效API應(yīng)用
python使用struct模塊實(shí)現(xiàn)打包/解包二進(jìn)制數(shù)據(jù)

