Skip to content

Core API Reference

This page provides detailed API documentation for fast-django's core components.

Application Factory

create_app

def create_app(settings: Settings | None = None) -> FastAPI

Creates and configures a FastAPI application with fast-django features.

Parameters: - settings (Settings, optional): Configuration settings. If None, uses default Settings.

Returns: - FastAPI: Configured FastAPI application instance.

Example:

from fast_django import create_app, Settings

# Using default settings
app = create_app()

# Using custom settings
settings = Settings(app_name="My App", debug=True)
app = create_app(settings)

Built-ins

create_app automatically adds fast_django.signals.SignalsMiddleware to emit request lifecycle signals. Custom middleware listed in Settings.middleware is applied after this built-in middleware.

Settings

Settings

class Settings(BaseSettings):
    app_name: str = "fast-django app"
    debug: bool = False
    secret_key: str = "change-me"
    base_dir: Path = Field(default_factory=lambda: Path.cwd())
    admin_enabled: bool = True
    admin_path: str = "/admin"
    orm: OrmConfig = Field(default_factory=OrmConfig)
    installed_apps: list[str] = Field(default_factory=list)
    middleware: list[str] = Field(default_factory=list)

Base settings class using Pydantic Settings.

Fields: - app_name (str): Application name for FastAPI title. - debug (bool): Debug mode flag. - secret_key (str): Secret key for security. - base_dir (Path): Base directory path. - admin_enabled (bool): Enable admin interface. - admin_path (str): Admin interface mount path. - orm (OrmConfig): Database configuration. - installed_apps (list[str]): List of installed app names. - middleware (list[str]): List of middleware dotted paths.

OrmConfig

class OrmConfig(BaseModel):
    models: list[str] = Field(default_factory=lambda: ["aerich.models"])
    connections: dict[str, str] = Field(default_factory=lambda: {"default": "sqlite://db.sqlite3"})
    apps: dict[str, dict[str, Any]] = Field(default_factory=dict)

Database configuration for Tortoise ORM.

Fields: - models (list[str]): List of model module paths. - connections (dict[str, str]): Database connection URLs. - apps (dict[str, dict[str, Any]]): App-specific ORM configuration.

Database

init_db

def init_db(app: FastAPI, settings: Settings) -> None

Initializes database connections and ORM.

Parameters: - app (FastAPI): FastAPI application instance. - settings (Settings): Application settings.

build_tortoise_config

def build_tortoise_config(settings: Settings) -> dict[str, Any]

Builds Tortoise ORM configuration from settings.

Parameters: - settings (Settings): Application settings.

Returns: - dict[str, Any]: Tortoise ORM configuration dictionary.

Apps

include_app_routers

def include_app_routers(app: FastAPI, app_names: list[str]) -> None

Automatically includes routers from installed apps.

Parameters: - app (FastAPI): FastAPI application instance. - app_names (list[str]): List of app names to include.

Discovery Order: 1. {app_name}.urls 2. {app_name}.routes 3. {app_name}.api 4. {app_name}.views

Admin

AdminSite

class AdminSite:
    def __init__(self, title: str = "Admin") -> None
    def mount(self, app: FastAPI, settings: Settings, path: Optional[str] = None) -> None
    def register_model(self, model: Type[Model]) -> None

Admin interface facade for mounting and model registration.

Methods: - __init__(title): Initialize admin site with title. - mount(app, settings, path): Mount admin interface to FastAPI app. - register_model(model): Register a model for admin interface.

try_call_admin_hooks

def try_call_admin_hooks(app: FastAPI, settings: Settings) -> None

Calls admin initialization hooks from installed apps.

Parameters: - app (FastAPI): FastAPI application instance. - settings (Settings): Application settings.

Hook Function:

def init_admin(app: FastAPI, settings: Settings) -> None:
    # Your admin configuration
    pass

Utilities

discover_models_modules

def discover_models_modules(start_dir: Path | None = None) -> list[str]

Discovers model modules in a directory.

Parameters: - start_dir (Path, optional): Directory to search. Defaults to current directory.

Returns: - list[str]: List of discovered model module paths.

Example:

from fast_django.utils import discover_models_modules

# Discover models in current directory
models = discover_models_modules()
# Returns: ['app1.models', 'app2.models', 'aerich.models']

# Discover models in specific directory
models = discover_models_modules(Path('/path/to/project'))