在 Flask 的 URL 中使用不同型別的引數
通過這個解釋,我們將瞭解 Flask 應用程式中的 URL 轉換器,這意味著能夠在任何 URL 中傳遞引數。我們還將學習如何在 Flask 應用程式的 URL 中使用不同型別的引數。
在 Flask 的 URL 中使用不同型別的引數
現在我們將討論 URL 引數並進行演示;我們將從預設開始,這是最基本的示例。為此,我們將建立一個路由並傳入 '/default/<params>'
的 route()
。
/default
將指向 URL。URL 的第二部分是引數,我們在大於和小於符號內指定引數。
然後我們將建立一個名為 DEFAULT()
的函式,併為我們在路由中定義的函式引數傳遞相同的名稱,因此在這種情況下,引數將是 params
。然後我們將返回該值並將該值與該字串連線起來。
from flask import Flask
app = Flask(__name__)
@app.route("/default/<params>")
def DEFAULT(params):
return "The parameter is: " + params
if __name__ == "__main__":
app.run(debug=True)
讓我們啟動我們的應用程式並開啟瀏覽器,在我們傳遞名稱時輸入 /default
後,我們將看到預設為字串的引數值。
我們將向你展示你可以使用的其他資料型別,但是對於字串的分析,我們將向你展示如果我們傳遞一個數字和十進位制數字,那麼這些都將起作用,因為它被轉換為一個字串。這樣,我們將獲得我們在端點中傳遞的任何值。
如果我們不傳遞引數,我們會得到一個未找到的錯誤,因為它需要一個引數。為了處理這種情況,當使用者沒有傳遞任何東西時,我們將指定另一個路由並把它放在上面。
在此路由中,我們將傳遞一個名為 defaults
的關鍵字引數並獲取 params
及其值。
@app.route('/default', defaults={'params': 'John'})
現在我們將重新啟動它,如果我們在不傳遞引數的情況下使用 URL,我們將獲得預設值 John
,但如果我們傳遞該值,那麼我們將獲得該值而不是預設值。
讓我們在路由中將資料型別作為字串傳遞,以指定它只能是字串。我們首先輸入 string
,然後是冒號,然後是引數名稱。
我們將為此路由定義另一個名為 String_Func()
的函式,並返回字串並連線我們在路由中定義的引數。
@app.route("/str-url/<string:str_params>")
def String_Func(str_params):
return "The string parameter is: " + str_params
我們可以看到這與預設路由的工作方式相同,因為預設情況下,引數型別是字串。
現在讓我們看看當我們想要處理不同的資料型別時會發生什麼,下一個資料型別將是整數。讓我們定義另一個路徑傳遞 <int:int_params>
;引數將是你所稱的任何引數。
然後我們像往常一樣定義一個函式並將其轉換為字串資料型別,因為我們無法將字串連線到整數。
@app.route("/int-url/<int:int_params>")
def Int_Func(int_params):
return "The integer parameter is: " + str(int_params)
輸出
我們使用的下一個資料型別是浮點數,以 <float:float_params>
開頭。
@app.route("/float-url/<float:float_params>")
def Float_Func(float_params):
return "The float parameter is: " + str(float_params)
如果我們傳遞 3.5,頁面會顯示它,但是如果我們只傳遞 3,我們會得到一個錯誤,因為 3 是一個整數,而 Flask 不允許這樣。如果你想要 3.0,則必須通過 3.0 或建立另一個將拾取任何整數的路由。
另一件事是路徑 URL,因此我們將為它定義一個新路由,並且我們將需要傳遞路徑資料型別和路徑名稱,例如 <path:our_path>
。
@app.route("/path-route/<path:our_path>")
def Path_Func(our_path):
return "Our path is: " + our_path
現在我們將轉到 URL 並給它路徑,然後它會顯示這個,但是如果我們在其中放入一些斜線並指定另一個子目錄,它會選擇它幷包含斜線。
我們要向你展示的最後一件事是你可以在同一路由中組合多個引數。我們將結合字串和整數引數,例如 <string:name>/<int:num>
。
讓我們定義一個函式並在函式內部指定兩個引數並返回它。
@app.route("/combine-route/<string:name>/<int:num>")
def Combine_Func(name, num):
return "User name is: " + name + " and user id is: " + str(num)
檢視輸出,以便你更好地理解它。
Flask App 的完整原始碼:
from flask import Flask
app = Flask(__name__)
# This is the default route
@app.route("/default", defaults={"params": "John"})
@app.route("/default/<params>")
def DEFAULT(params):
return "The string parameter is: " + params
# This route holds string data type
@app.route("/str-url/<string:str_params>")
def String_Func(str_params):
return "The string parameter is: " + str_params
# This route holds int data type
@app.route("/int-url/<int:int_params>")
def Int_Func(int_params):
return "The integer parameter is: " + str(int_params)
# This route holds float data type
@app.route("/float-url/<float:float_params>")
def Float_Func(float_params):
return "The float parameter is: " + str(float_params)
# This route holds path data type
@app.route("/path-route/<path:our_path>")
def Path_Func(our_path):
return "Our path is: " + our_path
# This route combine two parameters
@app.route("/combine-route/<string:name>/<int:num>")
def Combine_Func(name, num):
return "User name is: " + name + " and user id is: " + str(num)
if __name__ == "__main__":
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn