Metadata-Version: 2.1
Name: django-classy-settings
Version: 3.0.0
Summary: Simple class-based settings for Django
Home-page: https://django-classy-settings.readthedocs.io/en/latest/
License: BSD-2-Clause
Author: Curtis Maloney
Author-email: curtis@tinbrain.net
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: Django
Project-URL: Documentation, https://django-classy-settings.readthedocs.io/en/latest/
Project-URL: Repository, https://github.com/funkybob/django-classy-settings
Description-Content-Type: text/markdown

django-classy-settings
======================

Minimalist approach to class-based settings for Django

https://django-classy-settings.readthedocs.io/en/latest/


Quick Start
-----------

In your `settings.py`

    from cbs import BaseSettings, env


    ...
    # For env settings with a DJANGO_ prefix
    denv = env(prefix='DJANGO_')

    class Settings(BaseSettings):

        DEBUG = denv.bool(True)  # Controlled by DJANGO_DEBUG

        DEFAULT_DATABASE = denv.dburl('sqlite://db.sqlite')

        def DATABASES(self):
            return {
                'default': self.DEFAULT_DATABASE,
            }


    class ProdSettings(Settings):
        DEBUG = False

        @env
        def STATIC_ROOT(self):
            raise ValueError("Must set STATIC_ROOT!")

    __getattr__ = BaseSettings.use()


Switch between ``Settings`` and ``ProdSettings`` using the ``DJANGO_MODE`` env var:

    # Run default Settings
    $ ./manage.py test

    # Run ProdSettings
    $ DJANGO_MODE=prod ./manage.py test

