loginresult.html
<!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8">
<title>登录</title> </head> <body>
<form method="post">
<p>{{login_tip}}</p>
<div>
<label for="username">请输入用户名</label>
<input type="text" id="username" name="username">
</div>
<div>
<label for="password">请输入密码</label>
<input type="password" id="password" name="password">
</div>
<input type="submit" value="提交">
</form> </body> </html>
fastApiLogin.py
from fastapi import FastAPI, Request, Form
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
app = FastAPI()
# app.mount(
# "/static", #目录` static `
# StaticFiles(directory="static"),
# name="static" )
templates = Jinja2Templates(directory="templates")#模板文件夹,放html文件
@app.get("/login/", response_class=HTMLResponse)
async def read_item(request: Request):
print(request.method)
return templates.TemplateResponse(
"loginresult.html", context={
'request': request, 'login_tip': '用户登录'
}
)
@app.post("/login/")
async def login(
username: str = Form(),
password: str = Form() ):
return {"username": username}
if __name__ == "__main__":
import uvicorn
uvicorn.run(
app='fastApiLogin:app',
host="127.0.0.1",
port=8000, reload=True
)
优化了一下,加了name判断超出长度限制
@app.post("/login/")
async def login(
username: str = Form(),
password: str = Form() ):
if len(username)>3:#超过3个汉字就报错了
# raise ValueError("超出长度了") #抛异常
return "超出长度了"
return {"username": username}
raise ValueError(“超出长度了”) #抛异常,如下
File “d:\pythonXangmu\pythonproject01\fastApiLogin.py”, line 33, in login
raise ValueError(“超出长度了”) #抛异常
ValueError: 超出长度了
return “超出长度了”,结果展示: