Web
Browse the documentation in this section.
Routes
Declare your app's URL patterns once with the Routes builder - handlers and the dev-mode 404 panel stay in sync without parallel declarations.
Trailing-slash redirects
Opt-in 308 redirects between `/foo` and `/foo/` so URL typos still reach the right handler.
Error pages (404, 500)
Default Tailwind error pages, an on_server_error hook, panic safety, and dev-mode error detail.
Auth gating (login_required)
Gate handlers and Router subtrees behind authentication with LoggedIn<U> and LoginRequiredLayer.
Forms (Form<T> + #[derive(Form)])
Declare form validation as field attributes on a struct; the Form<T> extractor parses + validates the body and the handler branches on the structured FormErrors.
Response compression
Opt-in gzip/brotli compression for responses, chosen from the client's Accept-Encoding.
Middleware
A typed Middleware trait with before_request / after_response hooks, composed in a predictable onion order.
Streaming responses
Stream a large export or download chunk-by-chunk with StreamingResponse instead of buffering it in memory.
Syntax highlighting
Fenced code blocks in the markdown filter are highlighted server-side, safely.
Template filters & functions
minijinja built-in filters, umbral's custom filters and template functions, and how to register your own from app or plugin code.
Pagination (template list views)
Paginate a QuerySet into fixed-size pages for server-rendered list views with Paginator and Page.