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

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

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


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


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


代码讲解


默认转换器


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

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)


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

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


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

  • /post/123: 显示 Post ID: 123
  • /post/abc: Flask 将返回 404 错误,因为 abc 不是整数。
  • /username/johndoe: 显示 Username: johndoe


运行结果展示

  • 如果传递的参数类型错误就会报错



自定义转换器


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

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)


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

  • /user/<int:user_id>:使用了内置的 <int> 转换器,它只匹配整数类型的参数。
  • /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 错误,因为日期格式不正确。


运行结果展示

  • 测试日期的效果


相关文章
|
1月前
|
安全 Python
Flask过滤器与自定义过滤器的用法
Flask过滤器与自定义过滤器的用法
20 4
|
6月前
|
安全 Python
Flask 中的过滤器与自定义过滤器
Flask 中的过滤器与自定义过滤器
59 0
|
6月前
|
数据库 开发者 Python
flask中的abort函数和自定义异常
flask中的abort函数和自定义异常
86 0
|
Python
python flask自定义404错误页面
python flask自定义404错误页面
235 0
|
SQL 前端开发 算法
【flask进阶】Flask实现自定义分页(python web通用)
分页操作在web开发中几乎是必不可少的,而我们的flask不像django自带封装好的分页操作,要分页则需要依赖flask-sqlalchemy中的分页查询,但是分页这么重要且简单的操作,自己实现必须要会这个思维,我也在网上看了一些,但大体上不合我意,因此这篇我带大家手写一个分页操作!
720 0
【flask进阶】Flask实现自定义分页(python web通用)
|
前端开发 Python
ElementUI上传组件el-upload自定义http-request上传到Flask服务
ElementUI上传组件el-upload自定义http-request上传到Flask服务
577 0
ElementUI上传组件el-upload自定义http-request上传到Flask服务
|
Python
Flask自定义时间过滤器
Flask自带的过滤器功能有限,很多时候没办法满足用户需求。 故,Flask为用户提供了template_filter装饰器,用来创建用户所需的自定义过滤器
259 0
|
JSON 前端开发 数据格式
小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值
小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值
252 0
小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值
|
8天前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
25 2
|
17天前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
25 2