如何解决jinja2 TemplateResponse.template.render() 不会将上下文注入模板
我在 Jinja2 中使用 FastAPI。
我有一个发送电子邮件的功能。电子邮件的内容位于需要呈现的 HTML 中。
async def send_confirmation_email(
self,email: str,confirm_url: str,request: Request
):
html = templates.TemplateResponse(
"email_template.html",{
"request": request,"header": "Thanks for joining","url": confirm_url,"link_title": "ACTIVATE YOUR ACCOUNT",},)
await self.send_email(
html.template.render(),"Confirm Your Email",setting.EMAIL_SUPPORT,email,)
html.template.render()
仅呈现 HTML 的内容,而不将上下文填充到占位符中。例如"header": "Thanks for joining"
保持为空。
来自 HTML 的片段:
<td align="center" width="120" colspan="3" valign="top"><h2>{{ header }}</h2></td>
请问我遗漏了什么?
解决方法
TemplateResponse
返回 starlette.responses.Response
,而不是渲染器模板。
为此,您需要使用
templates.get_template("email_template.html").render({
"request": request,"header": "Thanks for joining","url": confirm_url,"link_title": "ACTIVATE YOUR ACCOUNT",})
(参考:https://github.com/encode/starlette/blob/master/starlette/templating.py#L72)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。