由于jinja2的starlette版本过高导致的问题:500 Server Error TypeError: unhashable type: 'dict'
一、先看问题:
HTML网页和路由都写好后,本以为通过浏览器能正常访问,结果报了个Internal Server Error错误,网页一片空白:
二、解决问题
为了能看到更多的报错信息,直接在FastAPI实例里加入debug=True这句。
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路由这里
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,改成下面这种写法就能正常访问了:
async def knowledge_test_page1(request: Request):"""知识库测试界面"""return templates.TemplateResponse(request,"test_knowledge_management.html",{"request": request})
三、关于AI工具使用的感想
此次解决的这个问题全程使用AI助手帮忙分析原因,说实话确实好用能帮我们省下很多时间和精力,但使用过程中也发现了一些问题:
1、AI分析的准确性跟你提供给他的问题数据和你的问题描述有很大的关系,如何陈述自己的问题决定了能否快速地找到问题的根本原因,prompt还是得好好写。
2、AI分析问题其实有很大的局限性,它只能对你当前提交的内容进行分析,它不了解整个项目的架构,没法按照项目的实际情况去分析,有时候给出的分析结果可能并不理想。
-
07.21
9月9日发售 《影之刃零》TGA定档PV公开
-
07.21
国产3A武侠《影之刃零》定档 2026年9月9日发售
-
07.21
明年夏天 爆料人称《影之刃零》发售日就是最热的时候
-
07.21
《刺客信条:黑旗 记忆重置》全玛雅之石获得方法指南
-
07.21
007初露锋芒夜间出行收集品分享方法
-
07.21
异环手游怎样切换第一人称
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏