由于jinja2的starlette版本过高引发的问题:500 Server Error TypeError: unhashable type: 'dict'

一、先看问题:

HTML网页和路由都写好后,本以为通过浏览器能正常访问,结果报了个Internal Server Error错误,网页一片空白:

二、解决问题

为了能看到更多的报错信息,直接在FastAPI实例里加入debug=True这句。

ini 复制代码
app = FastAPI(
    title = "智能语音AI代理",
    description= "提供预约管理、智能咨询、用户行为分析等功能的API服务",
    version="1.0.0",
    docs_url="/docs",
    redoc_url="/redoc",
    debug=True
)

加了debug后浏览器能看到更具体的报错信息,如下图:

找AI问了半天发现是因为我的Starlette是 1.3.1 版本,Jinja2Templates的TemplateResponse返回值的写法变了。问题就出在web路由这里

python 复制代码
@router.get("/test_knowledge_management", response_class=HTMLResponse, summary="知识库测试界面")
async def knowledge_test_page1(request: Request):
    """知识库测试界面"""
    return templates.TemplateResponse("test_knowledge_management.html",{"request": request})

老版本的写法可以用templates.TemplateResponse("test_knowledge_management.html", {"request": request}),但是新版本里TemplateResponse的第一个参数必须是request,改成下面这种写法就能正常访问了:

python 复制代码
@router.get("/test_knowledge_management", response_class=HTMLResponse, summary="知识库测试界面")
async def knowledge_test_page1(request: Request):
    """知识库测试界面"""
    return templates.TemplateResponse(request,"test_knowledge_management.html",{"request": request})

三、关于AI工具使用的感想

此次解决的这个问题全程使用AI助手帮忙分析原因,说实话确实好用能帮我们省下很多时间和精力,但使用过程中也发现了一些问题:

1、AI分析的准确性跟你提供给他的问题数据和你的问题描述有很大的关系,如何陈述自己的问题决定了能否快速地找到问题的根本原因,prompt还是得好好写。

2、AI分析问题其实有很大的局限性,它只能对你当前提交的内容进行分析,它不了解整个项目的架构,没法按照项目的实际情况去分析,有时候给出的分析结果可能并不理想。

相关推荐
QY_Research_35 分钟前
2026房地产NFT平台创业机遇与落地指南分析报告
大数据·人工智能·物联网·机器人·制造
机器人零零壹2 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
电子元件小说家3 小时前
2026年四季度电感市场观察:AI算力与汽车电子驱动下的选型与验证建议智能硬件
人工智能·汽车
网易CodeWave-小码哥3 小时前
支持多模块 Java 微服务导入|CodeWave SDD V4.5.10 上线
人工智能
AI你一生一世3 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
belldeep3 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
怕浪猫3 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
ss2734 小时前
为什么PostgreSQL适合AI场景?
数据库·人工智能·postgresql
七牛云行业应用5 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程
维克兜率天5 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python