前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Flask里面的默认转换器和自定义转换器

Flask里面的默认转换器和自定义转换器

作者头像
GeekLiHua
发布2025-01-21 14:17:22
发布2025-01-21 14:17:22
5900
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

Flask里面的默认转换器和自定义转换器

简介:本文讲解,Flask里面的默认转换器和自定义转换器。

Flask项目创建参考这篇文章:通过命令行的方式快速创建一个flask项目

代码讲解

默认转换器

以下是一个简单的 Flask 应用程序,演示了 Flask 的默认转换器的使用:

代码语言:javascript
代码运行次数:0
复制
from flask import Flask

app = Flask(__name__)

# 默认转换器示例
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post ID: {}'.format(post_id)

@app.route('/username/<username>')
def show_username(username):
    return 'Username: {}'.format(username)

if __name__ == '__main__':
    app.run(debug=True)

在这个示例中,定义了两个路由:

  1. /post/<int:post_id>:使用了默认的转换器,<int:post_id> 表示匹配一个整数类型的参数,并将其传递给路由处理函数 show_post()
  2. /username/<username>:也使用了默认的转换器,不指定转换器类型,因此默认为字符串类型。无论传入的是什么,Flask 都会将其作为字符串处理,并传递给路由处理函数 show_username()

运行该应用程序后,你可以通过访问不同的 URL 来测试这两个路由的行为:

  • /post/123: 显示 Post ID: 123
  • /post/abc: Flask 将返回 404 错误,因为 abc 不是整数。
  • /username/johndoe: 显示 Username: johndoe
  • 运行结果展示
  • 如果传递的参数类型错误就会报错
自定义转换器

下面代码砖石了内置转换器和自定义转换器的使用:

代码语言:javascript
代码运行次数:0
复制
from flask import Flask
from datetime import datetime
from werkzeug.routing import BaseConverter

app = Flask(__name__)

# 使用内置转换器演示
@app.route('/user/<int:user_id>')
def show_user(user_id):
    return 'User ID: %d' % user_id

# 定义自定义转换器
class DateConverter(BaseConverter):
    # to_python方法将 URL 中的字符串转换为 Python 对象
    def to_python(self, value):
        return datetime.strptime(value, '%Y-%m-%d')

    # to_url方法将 Python 对象转换为 URL 中的字符串
    def to_url(self, value):
        return value.strftime('%Y-%m-%d')

# 将自定义转换器添加到应用程序的转换器中,'date' 是转换器的名称
app.url_map.converters['date'] = DateConverter

@app.route('/date/<date:date>')
def show_date(date):
    return 'Date: %s' % date

if __name__ == '__main__':
    app.run(debug=True)

在这个应用程序中,演示了两个路由:

  1. /user/<int:user_id>:使用了内置的 <int> 转换器,它只匹配整数类型的参数。
  2. /date/<date:date>:使用了自定义的 DateConverter 转换器,它接受形如 YYYY-MM-DD 的日期字符串,并将其转换为 datetime 对象。

运行该应用程序后,你可以通过访问不同的 URL 来测试这两种转换器的使用。例如:

  • /user/123: 显示 User ID: 123
  • /user/abc: Flask 将返回 404 错误,因为 abc 不是整数。
  • /date/2022-12-31: 显示 Date: 2022-12-31
  • /date/31-12-2022: Flask 将返回 404 错误,因为日期格式不正确。
  • 运行结果展示
  • 测试日期的效果
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flask里面的默认转换器和自定义转换器
    • 代码讲解
      • 默认转换器
      • 自定义转换器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档