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

Flask中send_from_directory正常但render_template失败是什么原因?

问题根源
  • 原代码中send_from_directory是直接返回静态文件,不会解析文件内的Jinja2模板语法,即使原index.html里有{{ card.xxx }}这类模板占位符,也会作为普通文本返回给浏览器,不会触发变量校验。
  • 改为render_template后,Flask会调用Jinja2引擎解析模板,所有模板中用到的变量都必须从视图函数显式传入,你当前的视图函数没有传递card变量,因此触发未定义报错。
  • 将static文件夹重命名为templates的操作符合Flask默认的模板查找规则,这一步没有问题。
修复方案
  • 先梳理index.html中所有用到card相关变量的位置,确认需要传入的变量结构:是单个card对象,还是包含多个card的列表。
  • 调整视图函数的代码,在调用render_template时传入对应的变量,示例如下:
# 按照你项目的实际逻辑获取卡片数据,以下为示例代码
from .models import Card
cards = Card.query.all()

# 渲染时传入变量
return render_template('index.html', cards=cards)
  • 如果你不需要对应位置做动态渲染,也可以用Jinja的raw标签包裹占位符,让引擎跳过解析直接输出原始文本:
{% raw %}
{{ card.content }}
{% endraw %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:45:04