I have made up the post call and render the jinja2 template of login_form.html
main.py
:
from fastapi import FastAPI, Response, status, HTTPException, Depends
import hashlib
from fastapi import APIRouter, Form
from pydantic import BaseModel
from fastapi.staticfiles import StaticFiles
from fastapi import Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.post("/",response_class=HTMLResponse)
async def login_form(
request: Request, uname: str = Form(...), passcode: str = Form(...)
):
print(uname, passcode)
return templates.TemplateResponse(
"auth/login_form.html", {"request": request,"result": "res"}
)
login_form.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login Form</title>
</head>
<body>
<h1>Login Form</h1>
<form method="post">
<h5>Username</h5>
<input type="text" name="uname" placeholder="username"></input>
<h5>Password</h5>
<input name="passcode" placeholder="password" type="text"></input>
<input type="submit"></input>
</form>
<p>{{result}}</p>
</body>
</html>
When I load the page on web browser I get:
{"detail":"Method Not Allowed"}