Settings
The django-logikal library provides a set of opinionated standard settings modules for local
development, testing and production use.
You can simply import the appropriate settings module in your own settings files to benefit from a highly improved Django experience:
from django_logikal.settings import Settings
from django_logikal.settings.dynamic_site.dev import DevSettings
Settings(globals()).update(DevSettings)
Common Features
All settings modules include the following:
- An appropriate logging, storage, localization and static file serving configuration 
- PostgreSQL as the default database engine (including for local development and testing) 
- HTML validation support (via v.Nu) 
- Authentication support (via - django.contrib.auth)
- Sitemap support (via - django.contrib.sitemaps)
- Robots exclusion support (via django-robots) 
- The improved migration writer 
Settings Updates
Standard settings modules are provided as settings updates, which need to be applied to a
Settings instance:
- class django_logikal.settings.Settings(settings: Dict[str, Any])
- Store and update the provided settings. - update(settings_update: Type[SettingsUpdate]) Settings
- Apply the given settings update to the stored settings. 
 
You can specify your own settings updates by inheriting from the
SettingsUpdate class:
- class django_logikal.settings.SettingsUpdate
Tip
Static configuration options can be simply specified as class attributes, but it is also
possible to dynamically modify the settings by overriding the
apply() class method as follows:
from django_logikal.settings import Settings, SettingsUpdate
class AppSettings(SettingsUpdate):
    ROOT_URLCONF = 'app.website.urls'
    @staticmethod
    def apply(settings: Settings) -> None:
        settings['INSTALLED_APPS'] += ['app.website']
Tip
Note that settings updates can be chained, which makes combining the standard settings updates with your own custom settings updates simple and straightforward:
from django_logikal.settings import Settings
from django_logikal.settings.dynamic_site.dev import DevSettings
from app.settings.app import AppSettings
Settings(globals()).update(DevSettings).update(AppSettings)
Dynamic Site Settings
Provides email sending support (via Anymail and Amazon Simple Email Service) and the paranoid middleware.
Note
Requires the dynamic extra.
- class django_logikal.settings.dynamic_site.dev.DevSettings
- Standard settings for developing dynamic sites. 
- class django_logikal.settings.dynamic_site.testing.TestingSettings
- Standard settings for testing dynamic sites. 
- class django_logikal.settings.dynamic_site.production.ProductionSettings
- Standard production settings for dynamic sites. - Note - Secrets will be loaded from Google Secret Manager during import time. In particular, the secret key is loaded from the - SECRET_KEY_PATHsetting key (defaults to- django-secret-key), and the database configuration is loaded from the- DATABASE_SECRETS_PATHsetting key (defaults to- django-database-secrets), which must contain a JSON string with keys- hostname,- port,- database,- usernameand- password.
Static Site Settings
Provides static site generation support (via django-distill).
Note
Requires the static extra.
- class django_logikal.settings.static_site.dev.DevSettings
- Standard settings for developing static sites. 
- class django_logikal.settings.static_site.testing.TestingSettings
- Standard settings for testing static sites.