django-settings-holder
Object that allows settings to be accessed with attributes.
What it is and what it does
Django Settings Holder is a utility library designed for Django extension authors who need to manage their own configuration dictionaries. It wraps settings in a SettingsHolder class that lets you access configuration values as object attributes rather than dictionary keys, making code more readable and IDE-friendly.
The package automatically listens to Django's `setting_changed` signal, so user-defined settings are reloaded without requiring manual intervention. It also supports dot-notation imports (e.g., 'mymodule.myfunction') that are resolved automatically, and allows you to attach validators to settings that run when they are first accessed. This is particularly useful for Django packages that expose their own configuration options and want a clean, maintainable way to manage them.
Use it for:
- Building a Django package that needs its own settings namespace with attribute-style access.
- Validating extension settings at runtime without cluttering your package's initialization code.
- Automatically reloading extension configuration when Django's settings change (e.g., in tests or during development).
- Importing callable functions by string path and making them available as settings attributes.
- Providing a consistent, type-hinted settings interface for Django extensions.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a settings container for Django extensions that allows configuration values to be accessed as object attributes, with automatic reloading from Django's settings change signal and optional validators.
Yes, if you are developing a Django extension or package that needs to expose configuration options. The library is actively maintained, has no security vulnerabilities, and integrates cleanly with Django's settings system. For general Django projects not writing extensions, it adds little value.
Install
django-settings-holder on PyPI
pip
pip install django-settings-holderuv
uv add django-settings-holderpoetry
poetry add django-settings-holderInstalling django-settings-holder
Before you install
Low friction: pure Python wheel with only Django as a runtime dependency. Actively maintained with recent releases; last commit 2026-08-10. Supports current Django versions (4.2, 5.0, 5.1, 5.2) and modern Python (3.10–3.13).
License in practice
MIT license is permissive; you can use this in commercial and proprietary projects with minimal restrictions, provided you include the license text.
Quickstart
pip install django-settings-holder
from django_settings_holder import SettingsHolder
class MyExtensionSettings(SettingsHolder):
pass
settings = MyExtensionSettings()
Requires Django to be installed; intended for use within Django projects or extensions.
Verify before relying
- Whether validators are run synchronously or asynchronously when settings are first accessed.
- Whether dot-notation function imports work with all callable types or only specific ones.
- Performance characteristics when reloading large numbers of settings via the signal handler.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — Django |
| Maintenance | actively maintained — 474 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 157,395/month — #10,758 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: django_settings_holder-0.3.0-py3-none-any.whl
Keywords: django, settings, holder
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
django-appconfProvides a base class for Django apps to define…
permissive · top 5,000 on PyPI
django-constanceDjango-constance lets you store and manage…
permissive · top 5,000 on PyPI
django-waffleDjango Waffle provides feature flags (toggles)…
permissive · top 5,000 on PyPI
django-localflavorProvides country-specific form fields,…
permissive · top 5,000 on PyPI
django-admin-data-viewsAdds custom data views to the Django admin…
permissive · top 15,000 on PyPI
PyStaticConfigurationLoads, validates, and reads configuration from…
permissive · top 15,000 on PyPI
django-dirtyfieldsTracks which fields on a Django model instance…
permissive · top 15,000 on PyPI
django-signal-webhooksAdds webhook support to Django models by…
permissive · top 15,000 on PyPI
django-upgradeAutomatically modernizes Django project code by…
permissive · top 15,000 on PyPI
djangorestframework-simplejwtProvides JSON Web Token (JWT) authentication…
permissive · top 5,000 on PyPI