在 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