Flask框架路由定义与参数传递详解

Miles
Miles
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍Flask框架中路由的多种定义方式,包括请求方法限定、同路由多函数匹配及正则路由。深入解析路由传参机制,涵盖默认String类型与Int类型转换。同时演示了重定向、JSON返回及自定义状态码的实现,并介绍如何扩展自定义URL转换器以优化访问控制。

本文总结Flask框架中常用的路由定义方法,供读者参考学习。

Flask路由定义与匹配机制

Flask路由的多种定义方式

限定请求方法

通过methods参数指定路由接受的HTTP请求类型,支持同时指定多种方法。


@app.route('/',methods=['GET'])
def hello():
  return '<h1>hello world</h1>'

路由匹配机制

当同一路由路径对应多个视图函数时,Flask按照代码从上到下的顺序进行匹配。


@app.route('/')
def hello():
  return '<h1>hello world</h1>'
@app.route('/')
def hello_2017():
  return '<h1>hello 2017</h1>'

因此,上述示例中访问根路径将返回hello函数的执行结果。

路由参数传递与类型处理

路由参数传递示例

在实际开发中,常需将相似结构的URL映射至同一视图函数,例如通过同一接口展示不同用户的个人主页。

路由捕获的参数默认视为字符串类型,可通过尖括号指定类型(如int),若不指定则保持动态字符串解析。


@app.route('/user/<int:id>')
def hello_itheima(id):
  return 'hello itcast %d' %id

重定向、JSON返回与状态码处理

重定向功能示例


from flask import redirect
@app.route('/')
def hello_itheima():
  return redirect('http://www.itcast.cn')

返回JSON格式数据


from flask import Flask,json
@app.route('/json')
def do_json():
  hello = {"name":"stranger", "say":"hello"}
  return json.dumps(hello)

自定义HTTP状态码示例

在Flask中返回特定状态码主要有两种实现途径:

- 直接return元组:可自定义状态码及错误信息,如error=666和errmsg='查询数据库异常',便于前后端数据交互。 - abort方法:仅抛出符合HTTP协议的标准异常状态码,用于手动触发异常处理。


@app.route('/')
def hello_itheima():
  return 'hello itcast',666

正则路由与自定义转换器

正则表达式路由示例

Web开发中常需限制用户访问规则,此时可利用正则匹配实现访问控制,从而优化路由性能与安全性。

导入基础转换器模块


from werkzeug.routing import BaseConverter

实现自定义URL转换器


# 自定义转换器
class Regex_url(BaseConverter):
  def __init__(self,url_map,*args):
    super(Regex_url,self).__init__(url_map)
    self.regex = args[0]
app = Flask(__name__)
# 将自定义转换器类添加到转换器字典中
app.url_map.converters['re'] = Regex_url
@app.route('/user/<re("[a-z]{3}"):id>')
def hello_itheima(id):
  return 'hello %s' %id

Flask内置的几种标准转换器


DEFAULT_CONVERTERS = {
  'default':     UnicodeConverter,
  'string':      UnicodeConverter,
  'any':       AnyConverter,
  'path':       PathConverter,
  'int':       IntegerConverter,
  'float':      FloatConverter,
  'uuid':       UUIDConverter,
}

希望上述内容能协助读者更好地掌握Flask框架的路由配置与程序设计技巧。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。