使用 Flask 获取查询参数
通过这个解释,我们将学习如何借助 Flask 中的请求查询字符串从 URL 中获取参数。
借助 Flask 中的请求查询字符串提取参数
通常,我们在 Flask 中使用我们的参数构建一个干净的 URL,但有时我们出于某种原因想要一个传统的查询字符串。我们的查询字符串易于使用;它们只是由&
和右侧的值分隔。
现在我们将向你展示如何提取它们,我们可以在应用程序的某个地方使用它们,所以让我们开始吧。我们将设置我们的 Flask 应用程序,我们将从 Flask 模块导入 Flask
类,我们还需要导入请求变量并使用 Flask
类实例化一个对象。
from flask import Flask , request
我们将定义主块,在这个块内,我们将使用 run()
方法来运行我们的应用程序。然后我们将把 debug
等于 True
。
if __name__=='__main__':
app.run(debug=True)
现在我们将创建一个新路由并为此路由调用 params
,该函数将命名为 Get_Query_Params()
。我们将返回一些字符串以从查询字符串中获取参数。
我们将需要使用 requests 变量,定义两个参数并访问查询参数。要获取它们,我们只需要调用 requests.args
,这是一个包含查询字符串中所有参数的字典。
第一个将被称为 VAR1
,第二个将被称为 VAR2
并使用 requests.args['key']
键存储字典值。我们正在返回这些字典项以在页面上显示它们。
@app.route('/params')
def Get_Query_Params():
VAR1=request.args['var1']
VAR2=request.args['var2']
return f'Student name is: {VAR!} and Father nmae is: {VAR2}'
让我们启动服务器,在路由内部传递参数,然后点击 Enter 以查看显示的参数。
现在我们可以看到我们很容易从查询字符串中提取这些值。
我们将再举一个例子来访问所有查询参数。我们将创建一个名为 var1
的变量,它将存储 request.args
;这是一个包含我们作为查询参数提供的所有键和值的字典。
现在我们将在字典项上应用一个 for
循环,并能够访问和打印这些键和值。
@app.route('/')
def Get_Query_Params():
var1=request.args
for key,value in var1.items():
print(key,value)
使用这些键,我们还可以使用 if-else 语句访问特定的查询参数,以检查这些实际查询参数是否存在。目前,我们用来访问密钥的方式是使用 var1.get()
而不是使用 request.args['key']
因为 get()
是帮助我们访问密钥的方法。
if 'nationality' in var1.keys():
print(var1.get('nationality'))
return f'Age is {var1.get("age")} and nationality is {var1.get("nationality")}'
现在我们保存并启动服务器,进入浏览器,并在路由中提供键值对。当我们运行这个页面时,我们可以看到显示的参数,以及我们可以在控制台中看到打印键和值的地方。
这与从表单中获取数据非常相似;如果有人提交表单,我们可以从端点提取它。
完整的 Python 代码:
from flask import Flask , request
app = Flask(__name__)
# @app.route('/params')
# def Get_Query_Params():
# VAR1=request.args['var1']
# VAR2=request.args['var2']
# return f'Student name is: {VAR1} and Father nmae is: {VAR2}'
@app.route('/')
def Get_Query_Params():
var1=request.args
for key,value in var1.items():
print(key,value)
if 'nationality' in var1.keys():
print(var1.get('nationality'))
return f'Age is {var1.get("age")} and nationality is {var1.get("nationality")}'
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