Implement client-side routing
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
import json
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from starlette.config import Config
|
||||
from starlette.middleware.sessions import SessionMiddleware
|
||||
from starlette.responses import HTMLResponse, RedirectResponse
|
||||
from authlib.integrations.starlette_client import OAuth, OAuthError
|
||||
from fastapi.responses import HTMLResponse
|
||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||
|
||||
from .settings import settings
|
||||
from .user import user_auth
|
||||
@@ -13,8 +10,6 @@ app = FastAPI()
|
||||
|
||||
app.mount("/user/", user_auth)
|
||||
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
manifest = dict()
|
||||
if not settings.dev_mode:
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
@@ -23,12 +18,24 @@ if not settings.dev_mode:
|
||||
manifest = json.load(f)
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def index(request: Request):
|
||||
return templates.TemplateResponse(
|
||||
"index.html",
|
||||
{"request": request, "dev_mode": settings.dev_mode, "manifest": manifest},
|
||||
)
|
||||
j2env = Environment(
|
||||
loader=FileSystemLoader("templates"),
|
||||
autoescape=select_autoescape(),
|
||||
)
|
||||
index = j2env.get_template("index.html").render(
|
||||
dev_mode=settings.dev_mode,
|
||||
manifest=manifest,
|
||||
)
|
||||
|
||||
|
||||
@app.middleware("http")
|
||||
async def index_catch_all(request: Request, call_next):
|
||||
response = await call_next(request)
|
||||
|
||||
if response.status_code == 404:
|
||||
return HTMLResponse(index)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
if not settings.dev_mode:
|
||||
|
||||
Reference in New Issue
Block a user