📅  最后修改于: 2023-12-03 15:23:51.398000             🧑  作者: Mango
在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中,还支持如下类型:
如果你不指定参数类型,那么它默认为字符串类型。例如,以下路由和上面的路由是等效的:
@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}'