semvec/pypi-packages huggingface dataset:
djappsettings 0.4.0
Per-app default settings for Django
License: BSD

DjAppSettings: Per-App Settings for Django
==========================================

* I hate pasting blobs into my settings.py every time I enable an app.

* This is a Python module which provides a sane way for reusable Django apps to configure themselves.

* It's a drop-in replacement for the ``django.conf.settings`` class. You can fetch all of your project, app, and global default settings via a single ``settings`` object.

* It doesn't touch your project's settings module, and existing Django apps are free to ignore it. Your app can even fall back to the usual method if this module isn't available.

* App settings are prevented from clobbering `built-in settings`_. They can only *add* settings.

* Project settings (in ``DJANGO_SETTINGS_MODULE``) override app settings.

* Using per-app prefixes is a good idea, but not mandatory.

.. _built-in settings: http://code.djangoproject.com/browser/django/trunk/django/conf/global_settings.py


But, but
--------

* I'm aware of `Jared Forsyth`_'s `django-appsettings`_, and I think it's lovely but wrong. Project settings should not be editable in the Django admin.

* I'm also aware that this feature has been rejected numerous times on the Django trac. But pasting a bunch of junk into my ``settings.py`` each time I add an app is a pain in the ass.

* Checking for a setting (via ``settings.hasattr``), and falling back to a hard-coded default value is a terrible solution, because your defaults are duplicated and buried. They should be easily discoverable.

.. _Jared Forsyth: http://github.com/jabapyth
.. _django-appsettings: http://github.com/jabapyth/django-appsettings


Usage
=====

Where you would usually do something like::

    from django.conf import settings
    getattr(settings, "MY_SETTING", "DEFAULT")

Create a ``settings.py`` file in your app, containing::

    MY_SETTING = "DEFAULT"

and do something like::

    from djappsettings import settings
    settings.MY_SETTING

If you'd like to support this module where available, but fall back to the usual method if not, just ``try`` it::

    try: from djappsettings import settings
    except: from django.conf import settings
    settings.MY_SETTING


Installation
============

Via Pip::

    $ pip install djappsettings

Via GitHub::

    $ git clone git://github.com/adammck/djappsettings.git
    $ python djangoappsettings/setup.py install


Testing
=======

Install tox and run the tests::

    $ git clone git://github.com/adammck/djappsettings.git
    $ pip install tox
    $ cd djappsettings
    $ tox


Bugs?
=====

This was created to scratch an itch for the `RapidSMS`_ project. I hope it will be useful to you. Use it at your own risk. (But do use it, because it's *way* better.)

Patches and pull requests are very welcome.
Please file bugs on `GitHub`_.

.. _RapidSMS: http://rapidsms.org
.. _GitHub: http://github.com/adammck/djappsettings/issues


License
=======

djappsettings is free software, available under the BSD license.