Skip to Content
FeaturesBundled ExtensionsOverview

Bundled Extensions

What are Bundled Extensions? These are Extensions that come pre-installed in the Django-CFG solution template. They’re fully functional, customizable Django apps ready to use out of the box.

Django-CFG solution template includes production-ready extensions that use the modern Extensions System with auto-discovery and type-safe Pydantic configuration.

How Extensions Work

Unlike traditional Django apps that require manual INSTALLED_APPS configuration, extensions use auto-discovery:

your_project/ └── extensions/ └── apps/ ├── accounts/ # User authentication & management │ ├── __cfg__.py # ← Configuration enables extension │ ├── models.py │ ├── admin.py │ └── urls.py └── totp/ # Two-factor authentication ├── __cfg__.py └── ...

Enable/Disable Extensions

Each extension has a __cfg__.py file. The settings = ... line enables it:

# extensions/apps/accounts/__cfg__.py from django_cfg.extensions.configs.apps.base import BaseExtensionSettings class AccountsSettings(BaseExtensionSettings): name: str = "accounts" oauth_providers: list[str] = ["google", "github"] settings = AccountsSettings() # ← This line ENABLES the extension

To disable: Comment out or remove settings = ...:

# settings = AccountsSettings() # Extension disabled

Learn more about Extensions System →


Built-in Extensions

User Management

Complete user lifecycle management - authentication, profiles, and security.

ExtensionDescriptionLocation
AccountsUser authentication, profiles, JWT, OTP, OAuthextensions/apps/accounts/
TOTPTwo-factor authenticationextensions/apps/totp/

Use Cases: SaaS registration, user authentication, two-factor security.

Explore User Management →


Quick Start

1. Configure Extensions

Each extension in extensions/apps/ has a __cfg__.py file:

# extensions/apps/accounts/__cfg__.py from django_cfg.extensions.configs.apps.base import BaseExtensionSettings class AccountsSettings(BaseExtensionSettings): name: str = "accounts" oauth_providers: list[str] = ["google", "github"] settings = AccountsSettings()

2. Run Migrations

python manage.py migrate_all

3. Access Admin Interface

# Navigate to Django admin http://localhost:8000/admin/ # Extensions are grouped in admin sidebar: # - User Management (Accounts, TOTP)

Extension Architecture

Auto-Discovery Flow

What Extensions Provide

Each extension can include:

  • Models - Database tables with migrations
  • Admin - Admin interface with navigation
  • URLs - API endpoints at /cfg/{extension}/
  • Views - REST API viewsets
  • Tasks - Background jobs (Django-RQ)
  • Constance - Runtime settings in admin

URL Convention

Extensions follow automatic URL routing:

FileURL Pattern
urls.py/cfg/{prefix}/
urls_admin.py/cfg/{prefix}/admin/
urls_system.py/cfg/{prefix}/system/

Customization

Override Extension Settings

# extensions/apps/accounts/__cfg__.py from django_cfg.extensions.configs.apps.base import BaseExtensionSettings class AccountsSettings(BaseExtensionSettings): name: str = "accounts" oauth_providers: list[str] = ["google", "github"] settings = AccountsSettings()

Modify Extension Code

All code in extensions/apps/ can be modified:

# extensions/apps/accounts/models.py from django.db import models class UserProfile(models.Model): # Add custom fields custom_field = models.CharField(max_length=100, blank=True) # Override methods def save(self, *args, **kwargs): # Custom logic before save super().save(*args, **kwargs)

Security & Performance

Built-in Security

All extensions include:

  • Input Validation - Pydantic-based validation
  • Authentication - JWT/session auth support
  • Rate Limiting - API rate limiting (see Rate Limiting)
  • Audit Logging - Operation audit trails

Performance Features

  • Async Tasks - Background processing with Django-RQ
  • Caching - Redis caching for frequently accessed data
  • Lazy Loading - Extensions loaded on demand
  • Database Optimization - Query optimization, connection pooling


Extension Hub

Discover More Extensions Browse and install additional extensions from the django-cfg repository 

django-cfg install <extension-name>

You can also create and publish your own extensions to share with the community!

Last updated on