Python測試開發flask - 2. URL與函式的對映
阿新 • • 發佈:2022-05-15
URL與函式的對映:
從之前的app.py
檔案中,我們已經看到,一個URL
要與執行函式進行對映,使用的是@app.route
裝飾器。
@app.route
裝飾器中,可以指定URL
的規則來進行更加詳細的對映,比如現在要對映一個文章詳情的URL
,文章詳情的URL
是/article/id/
,id有可能為1、2、3…,那麼可以通過以下方式:
@app.route('/article/<id>/') def article(id): return '此時是第 %s 頁 article detail' % id
其中<id>
,尖括號是固定寫法,語法為<variable>
,variable
<converter:variable>
,其中converter
就是型別名稱,可以有以下幾種:
-
string: 預設的資料型別,接受沒有任何斜槓
/
的字串。 -
@app.route('/article/<number>') def article_list(number): return '%s article detail'%number
-
int: 資料型別只能傳遞'int'型別
-
@app.route('/page/<int:artiole_id>/') def article_detail(artiole_id):
-
float: 資料型別只能傳遞'float'型別
-
@app.route('/page/<float:artiole_id>/') def article_detail(artiole_id): return '您請求的文章是:%s'%artiole_id
-
path: 和
string
類似,都是可以接收任意的字串,但是'path'可以接收路徑,也就是說可以包含傳遞斜槓/
。 -
@app.route('/page/<path:test>/') def article_detail(test): return
-
uuid:
uuid
型別的字串,只能接收符合uuid 的字串,uuid是一個全宇宙都唯一的字串,一般可以用來作為表的主鍵。 -
@app.route('/user/<uuid:user_id>/') def user_detail(user_id): return '使用者個人中心頁面:%s'%user_id
-
any:可以指定多種路徑,這個通過一個例子來進行說明:
-
@app.route('/<any(user_1,user_2):url_path>/<id>') def detail(url_path,id): if url_path == 'user_1': return 'user_1個人中心, %s' %id else: return 'user_2個人中心, %s' %id
detail
這個函式可以接受兩個URL
,一個是/user_1/
,另一個是/user_2/
。並且,一定要傳url_path
引數,當然這個url_path
的名稱可以隨便。
如果不想定製子路徑來傳遞引數,也可以通過傳統的?=
的形式來傳遞引數,例如:/article?id=xxx
,這種情況下,可以通過request.args.get('id')
來獲取id
的值。如果是post
方法,則可以通過request.form.get('id')
來進行獲取。程式碼如下
# 匯入request模組 from flask import request @app.route('/search/') def seacher(): # wd = request.args.get('wd',type=str,default=None) # get wd = request.form.get('wd',type=str,default=None) # post return '您通過查詢字串的方式傳遞的引數是:%s'%wd