Flask jsonify 格式化 DateTime

前言

搜索发现 提供的 代码都不能实现
以下 是我的环境
Python 3.10.14
Flask 3.0.3
Werkzeug 3.0.3

解析

Flask 的 Json 方法是由
flask.json.provider.DefaultJSONProvider 代理实现
调用 flask.json.provider._default 做具体的格式化
思路:
掩盖原方法 指向 自定义方法

实现

myJsonEncoder.py

from datetime import datetime, date
from flask.json.provider import DefaultJSONProvider, _default as flask_json_default

import typing as t

def _default(o: t.Any) -> t.Any:
    if isinstance(o, datetime):
        return o.strftime('%Y-%m-%d %H:%M:%S')
    elif isinstance(o, date):
        return o.strftime('%Y-%m-%d')

    return flask_json_default(o)


class MyJSONProvider(DefaultJSONProvider):
    default: t.Callable[[t.Any], t.Any] = staticmethod(_default)

flask -> app.py
!!!记得放 create_app 之前

from module import myJsonEncoder

flask.Flask.json_provider_class = myJsonEncoder.MyJSONProvider

# web_app = create_app(__name__)

以上!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值