Static Files
Serving static files is a common requirement for web applications. Nexios provides a robust and flexible system for serving static assets like CSS, JavaScript, images, and other file types with security and performance in mind.
⚠️ Deprecated
The StaticFilesHandler class is deprecated and will be removed in a future version. Please use the new StaticFiles class instead.
Basic Setup
To serve static files in Nexios, you can use either the new StaticFiles class or the deprecated StaticFilesHandler:
Using StaticFiles (Recommended)
from nexios import NexiosApp
from nexios.static import StaticFiles
app = NexiosApp()
# Create a static files handler for a single directory
static_files = StaticFiles(directory="static")
# Register the static files handler with a prefix
app.register(static_files, prefix="/static")Using StaticFilesHandler (Deprecated)
from nexios import NexiosApp
from nexios.static import StaticFilesHandler
from nexios.routing import Routes
app = NexiosApp()
# Create a static files handler for a single directory
static_handler = StaticFilesHandler(
directory="static", # Directory relative to the application root
url_prefix="/static/" # URL prefix for accessing static files
)
# Add a route for static files
app.add_route(
Routes(
"/static/{path:path}",
static_handler
)
)With this setup, a file at static/css/style.css would be accessible at /static/css/style.css.
Single Directory
The simplest configuration uses a single directory for all static files:
# Using StaticFiles (Recommended)
static_files = StaticFiles(directory="static")
app.register(static_files, prefix="/static")
# Using StaticFilesHandler (Deprecated)
static_handler = StaticFilesHandler(
directory="static",
url_prefix="/static/"
)Multiple Directories
For more complex setups, you can serve files from multiple directories:
# Using StaticFiles (Recommended)
static_files = StaticFiles(directories=["static", "public/assets", "uploads"])
app.register(static_files, prefix="/static")
# Using StaticFilesHandler (Deprecated)
static_handler = StaticFilesHandler(
directories=["static", "public/assets", "uploads"],
url_prefix="/static/"
)When serving from multiple directories, Nexios searches for files in the order the directories are specified.
URL Prefixing
The prefix parameter (for StaticFiles) or url_prefix parameter (for StaticFilesHandler) defines the URL path under which static files are served:
# Using StaticFiles (Recommended)
static_files = StaticFiles(directory="static")
app.register(static_files, prefix="/assets") # Serve files at /assets/ instead of /static/
# Using StaticFilesHandler (Deprecated)
static_handler = StaticFilesHandler(
directory="static",
url_prefix="/assets/" # Serve files at /assets/ instead of /static/
)