我想从 jinja2 模板调用一个 fastapi 路由并将数据传递给被调用的路由。我所有的尝试都失败了。
我在 jinja2 模板中尝试了一些东西,比如 {{ url_for('function1', uustr=data.uustr, interval=1) }}
这是我要调用的 fastapi 路由(出于演示目的简化了语法):
@app.get("/updates/data/{uustr}",response_class=HTMLResponse)
async def function1(request: Request, uustr:str, interval:int):
return"""
<html>
<head>
<title>{{ uustr }}</title>
</head>
<body>
<h1>{{ interval }}</h1>
</body>
</html>
"""
我收到此错误:
raise ValueError('context must include a "request" key')
ValueError: context must include a "request" key
有人有想法吗?
我找到了一个非常简单的解决方案,无需使用 url_for()
如果来自烧瓶世界的人有类似的问题,我的解决方案是: 我在 jinja2 模板中创建了一个简单的 HTML 按钮:
<button onclick="myFunction()">pass data to route</button>
并且我创建了一个非常简单的 javascript 函数来将数据传递给路由:
<script>
function myFunction() {
window.location.href = "/updates/data/{{data.uustr}}?interval=2";
}
</script>
就是这样。