43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
import pathlib
|
|
import uuid
|
|
|
|
import uvicorn
|
|
from fastapi import FastAPI, Request
|
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
|
|
app = FastAPI()
|
|
|
|
TEMPLATE = pathlib.Path(__file__).parent.joinpath("templates/web")
|
|
template = Jinja2Templates(directory=TEMPLATE)
|
|
|
|
users = [
|
|
dict(id=uuid.uuid4(), name="Steve Jobs"),
|
|
dict(id=uuid.uuid4(), name="Bill Gates"),
|
|
dict(id=uuid.uuid4(), name="Sundar Pichai"),
|
|
dict(id=uuid.uuid4(), name="Jeff Bezos"),
|
|
dict(id=uuid.uuid4(), name="100gle"),
|
|
]
|
|
|
|
|
|
@app.get("/", response_class=HTMLResponse)
|
|
async def index(request: Request):
|
|
ctx = dict(request=request)
|
|
return template.TemplateResponse("index.html", context=ctx)
|
|
|
|
|
|
@app.get("/users/", response_class=HTMLResponse)
|
|
async def get_users(request: Request):
|
|
ctx = dict(request=request, users=users)
|
|
return template.TemplateResponse("user.html", context=ctx)
|
|
|
|
|
|
@app.get("/users/{name}", response_class=HTMLResponse)
|
|
async def add_user(name: str):
|
|
users.append(dict(id=uuid.uuid4(), name=name))
|
|
return RedirectResponse("/users")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
uvicorn.run(app)
|