Add 404 handler and template
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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
14
app/templates/404.html
Normal 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 %}
|
||||||
Reference in New Issue
Block a user