使用 Flask 获取查询参数

Salman Mehmood 2022年7月18日
使用 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 以查看显示的参数。

Flask 获取查询参数输出 1

现在我们可以看到我们很容易从查询字符串中提取这些值。

我们将再举一个例子来访问所有查询参数。我们将创建一个名为 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")}'

现在我们保存并启动服务器,进入浏览器,并在路由中提供键值对。当我们运行这个页面时,我们可以看到显示的参数,以及我们可以在控制台中看到打印键和值的地方。

Flask 获取查询参数输出 2

这与从表单中获取数据非常相似;如果有人提交表单,我们可以从端点提取它。

完整的 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)
Salman Mehmood avatar Salman Mehmood avatar

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