Add 404 handler and template

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
giles
2026-01-11 13:14:29 +00:00
parent e7e95b7857
commit ada51c0880
2 changed files with 27 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ Creates and configures the FastAPI application with all routers and middleware.
from pathlib import Path from pathlib import Path
from fastapi import FastAPI, Request from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from artdag_common import create_jinja_env from artdag_common import create_jinja_env
@@ -41,6 +42,18 @@ def create_app() -> FastAPI:
template_dir = Path(__file__).parent / "templates" template_dir = Path(__file__).parent / "templates"
app.state.templates = create_jinja_env(template_dir) app.state.templates = create_jinja_env(template_dir)
# Custom 404 handler
@app.exception_handler(404)
async def not_found_handler(request: Request, exc):
from artdag_common.middleware import wants_html
if wants_html(request):
from artdag_common import render
return render(app.state.templates, "404.html", request,
user=None,
status_code=404,
)
return JSONResponse({"detail": "Not found"}, status_code=404)
# Include routers # Include routers
from .routers import auth, storage, api, recipes, cache, runs, home from .routers import auth, storage, api, recipes, cache, runs, home

14
app/templates/404.html Normal file
View File

@@ -0,0 +1,14 @@
{% extends "base.html" %}
{% block title %}Not Found - Art-DAG L1{% endblock %}
{% block content %}
<div class="max-w-2xl mx-auto text-center py-16">
<h1 class="text-6xl font-bold text-gray-400 mb-4">404</h1>
<h2 class="text-2xl font-semibold mb-4">Page Not Found</h2>
<p class="text-gray-400 mb-8">The page you're looking for doesn't exist or has been moved.</p>
<a href="/" class="bg-blue-600 hover:bg-blue-700 px-6 py-3 rounded-lg font-medium">
Go Home
</a>
</div>
{% endblock %}