📜  如何使用 Flask 从 URL 获取命名参数? (1)

📅  最后修改于: 2023-12-03 15:23:51.398000             🧑  作者: Mango

如何使用 Flask 从 URL 获取命名参数?

在Web应用程序开发过程中,获取来自URL的命名参数(Named Parameters)是一个基本需求。Flask提供了一个简洁而方便的方法来获取这些参数。在本文中,我们将一起学习如何使用Flask从URL获取命名参数。

获取命名参数示例

首先,让我们看一个获取命名参数的示例。假设我们有以下的URL:

http://localhost:5000/user/123/john

我们想从这个URL中获取用户的ID和用户名。在Flask中,要实现这个功能,我们可以在路由中使用< >符号来定义参数名称,如下所示:

@app.route('/user/<int:user_id>/<string:user_name>')
def user_info(user_id, user_name):
    return f'User id is {user_id}, user name is {user_name}'

在上面这个路由中,我们将用户的ID定义为一个整数类型,将用户名定义为一个字符串类型。然后,我们将这些参数传递给处理函数user_info()。最后,我们将这些参数格式化后返回给客户端。

参数类型定义

在Flask中,我们可以将参数类型定义为<type: variable_name>的形式。例如:

@app.route('/user/<int:user_id>/<string:user_name>')

这个路由中,我们将用户ID定义为整数类型,将用户名定义为字符串类型。 在Flask中,还支持如下类型:

  • int
  • float
  • path
  • uuid
  • any

如果你不指定参数类型,那么它默认为字符串类型。例如,以下路由和上面的路由是等效的:

@app.route('/user/<user_id>/<user_name>')
获取查询字符串参数

除了获取URL中的命名参数,Flask还支持获取查询字符串参数。查询字符串参数是以?开头的部分。例如,以下URL包含了三个查询字符串参数:

http://localhost:5000/search?q=flask&page=2&sort=price

在Flask中,我们可以使用request.args来获取这些查询字符串参数。例如:

from flask import Flask, request

app = Flask(__name__)

@app.route('/search')
def search():
    query = request.args.get('q')
    page = request.args.get('page')
    sort_by = request.args.get('sort')

    return f'Search query is {query}, page is {page}, sort by is {sort_by}'

在上面这个路由中,我们使用request.args.get()方法来获取查询字符串的参数值。这个方法会从请求对象request中获取查询字符串,其中参数名称为'q','page'和'sort'。如果查询字符串中没有这些参数,request.args.get()则会返回None。

总结

在本文中,我们学习了如何使用Flask从URL获取命名参数并获取查询字符串参数。通过使用Flask提供的简单API,你可以轻松地访问和管理URL中的参数,快速地开发出复杂的Web应用程序。

@app.route('/search')
def search():
    query = request.args.get('q')
    page = request.args.get('page')
    sort_by = request.args.get('sort')

    return f'Search query is {query}, page is {page}, sort by is {sort_by}'
@app.route('/user/<int:user_id>/<string:user_name>')
def user_info(user_id, user_name):
    return f'User id is {user_id}, user name is {user_name}'