我有一个使用 FastAPI 的简单程序,它将浮点值乘以 2 并将其显示在 HTML 中;该值通过 HTML 表单输入。我想知道如何获得动态显示的值,而无需在按 Enter 或按提交按钮时重新加载页面。
以下是脚本(main.py 和 double.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
<form method="post">
<input type="number" step="0.00000001" name="num"/>
<input type="submit"/>
</form>
<p>Result: {{ result }}</p>
</body>
</html>
from fastapi import FastAPI, Request, Form
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
import uvicorn
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get("/", response_class=HTMLResponse)
async def double_num(request: Request):
result = "Type a number"
return templates.TemplateResponse('double.html', context={'request': request, 'result': result})
@app.post("/", response_class=HTMLResponse)
async def double_num(request: Request, num: float = Form(...)):
result = num*2
return templates.TemplateResponse('double.html', context={'request': request, 'result': result})
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
我意识到有人问过类似的问题,但它们似乎涉及 jquery/javascript,并且由于 FastAPI/python 后端而对我不起作用。