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

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

本文详细介绍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 相关产品和应用

全部下载

专题列表