Files
sspai-100-hours-series-python/code/newsletter/N7/web.py

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)