fastapi:jinja2模板:自定义过滤器datetime_format

一,fastapi应用jinja2模板,使用datetime_format这个过滤器时会报错

报错信息:

jinja2.exceptions.TemplateAssertionError: No filter named 'datetime_format'.

二,报错原因

FastAPI 不能直接使用 datetime_format,因为这个过滤器不是 Jinja2 的内置功能。
在 Flask 中能直接使用,通常是因为你使用了 Flask-Bootstrap、Flask-Moment 等第三方插件,或是项目框架在初始化时自动帮你注册了这个自定义过滤器。
由于 FastAPI 是一个轻量级的异步 API 框架,它没有像 Flask 那么多的默认全栈配置。如果你想在 FastAPI 的 Jinja2 模板中使用它,你需要手动自定义并注册这个过滤器

三,解决:

# 1. 初始化 Jinja2 模板目录
templates = Jinja2Templates(directory="templates")

# 2. 定义你的日期格式化函数
def datetime_format(value: datetime, format_str: str = "%Y-%m-%d %H:%M:%S") -> str:
    if value is None:
        return ""
    return value.strftime(format_str)


# 3. 将函数注册为 Jinja2 过滤器
templates.env.filters["datetime_format"] = datetime_format

 

posted @ 2026-07-19 12:47  刘宏缔的架构森林  阅读(3)  评论(0)    收藏  举报