fastapi:jinja2模板:自定义过滤器datetime_format
一,fastapi应用jinja2模板,使用datetime_format这个过滤器时会报错
报错信息:
jinja2.exceptions.TemplateAssertionError: No filter named 'datetime_format'.
二,报错原因
FastAPI 不能直接使用
在 Flask 中能直接使用,通常是因为你使用了 Flask-Bootstrap、Flask-Moment 等第三方插件,或是项目框架在初始化时自动帮你注册了这个自定义过滤器。
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
浙公网安备 33010602011771号