You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask如何从字符串渲染响应体而非模板文件?报错求助

解决Flask从字符串渲染模板的错误

你的代码报错TypeError: Can't compile non template nodes,原因是DictLoader要求传入模板字符串,但你传入了已经实例化的Template对象。以下是几种正确的实现方式:

方式一:直接使用Jinja2的Template类

无需构建Loader和Environment,直接用Template类处理字符串:

from jinja2 import Template

template_string = "To: {{ toPerson }}, From: {{ fromPerson }}\nMessage: {{ message }}"
template = Template(template_string)
response = template.render(toPerson="The to person", fromPerson="The from person", message="Lorem Ipsum")

方式二:正确使用DictLoader

如果要基于Environment实现,DictLoader的字典值必须是模板字符串,而非Template实例:

from jinja2 import Environment, DictLoader

template_string = "To: {{ toPerson }}, From: {{ fromPerson }}\nMessage: {{ message }}"
loader = DictLoader({
    'template': template_string,  # 传入原始模板字符串
})
env = Environment(loader=loader)
response = env.get_template('template').render(toPerson="The to person", fromPerson="The from person", message="Lorem Ipsum")

方式三:使用Flask内置的便捷方法(推荐)

Flask封装了render_template_string,直接调用即可完成字符串模板渲染,无需手动操作Jinja2底层API:

from flask import render_template_string

template_string = "To: {{ toPerson }}, From: {{ fromPerson }}\nMessage: {{ message }}"
response = render_template_string(template_string, toPerson="The to person", fromPerson="The from person", message="Lorem Ipsum")

内容的提问来源于stack exchange,提问作者Ela Buwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:05:59