{"id":14972836,"url":"https://github.com/nitely/django-app-defaults","last_synced_at":"2025-10-26T20:32:07.485Z","repository":{"id":57418941,"uuid":"121377564","full_name":"nitely/django-app-defaults","owner":"nitely","description":":gear: Overridable default static settings for apps and projects","archived":false,"fork":false,"pushed_at":"2021-12-21T09:27:01.000Z","size":19,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-01T00:14:37.924Z","etag":null,"topics":["config","django","django-application","django-framework","python"],"latest_commit_sha":null,"homepage":"https://django-app-defaults.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitely.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-13T12:01:33.000Z","updated_at":"2023-10-06T08:06:30.000Z","dependencies_parsed_at":"2022-09-13T21:02:05.551Z","dependency_job_id":null,"html_url":"https://github.com/nitely/django-app-defaults","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitely%2Fdjango-app-defaults","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitely%2Fdjango-app-defaults/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitely%2Fdjango-app-defaults/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitely%2Fdjango-app-defaults/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitely","download_url":"https://codeload.github.com/nitely/django-app-defaults/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238397202,"owners_count":19465134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["config","django","django-application","django-framework","python"],"created_at":"2024-09-24T13:47:36.897Z","updated_at":"2025-10-26T20:32:02.178Z","avatar_url":"https://github.com/nitely.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# django-app-defaults\n\n[![Build Status](https://img.shields.io/travis/nitely/django-app-defaults.svg?style=flat-square)](https://travis-ci.org/nitely/django-app-defaults)\n[![Coverage Status](https://img.shields.io/coveralls/nitely/django-app-defaults.svg?style=flat-square)](https://coveralls.io/r/nitely/django-app-defaults)\n[![pypi](https://img.shields.io/pypi/v/django-app-defaults.svg?style=flat-square)](https://pypi.python.org/pypi/django-app-defaults)\n[![licence](https://img.shields.io/pypi/l/django-app-defaults.svg?style=flat-square)](https://raw.githubusercontent.com/nitely/django-app-defaults/master/LICENSE)\n\nA library for managing default static settings for apps and projects.\nDefine default settings for apps and override them in project settings when needed.\n\n## Why?\n\nThis library encourages loose coupling between apps by defining\nthe settings of each app locally. For authors of reusable apps,\nit allows to avoid the `getattr` pattern, and the definition of\ndefault values scattered everywhere. Unlike other alternatives,\nit avoids being too magical, and sticks to the Django conventions.\nDefining settings should be simple, as they are just settings after all.\n\n## Requirements\n\n* Python 2.7, +3.4\n* Django 1.8, 1.11, +2.0\n\n## Install\n\n```\npip install django-app-defaults\n```\n\n## Usage\n\n```python\n# my_app/defaults.py\n\n# `django.conf.settings` or any other\n# module can be imported and used\n\n# required for auto discoverability\nDEFAULT_SETTINGS_MODULE = True\n\n#: This is a doc comment for\n#: my setting I just created\nMY_DEFAULT_SETTING = \"yay\"\n```\n\n\u003e Note: all `defaults`'s settings can be\n\u003e overridden in `my_project/settings.py`\n\nThen anywhere within your project or app:\n\n```python\nfrom app_defaults import settings\n\nprint(settings.MY_DEFAULT_SETTING)\n# yay\n\n# All `django.conf.settings` are also available\nprint(settings.DEBUG)\n# True\n```\n\nTo load default settings for a single app instead of all of the apps, just do:\n\n```python\nfrom app_defaults import Settings\n\nsettings = Settings(apps=[\"my_app\"])\n\n# or\n\nfrom my_app import defaults\nsettings = Settings(modules=[defaults])\n```\n\n\u003e Note: the `DEFAULT_SETTINGS_MODULE` variable is not required\n\u003e when explicitly passing `apps` or `modules`\n\n## How it works\n\nIt's an extremely simple library. It goes through all installed apps and\nlooks for a `defaults.py` module at the root of the app. If a `DEFAULT_SETTINGS_MODULE`\nvar is found, then the module is loaded.\n\nIt's similar to the following pattern, but generalized into a reusable lib:\n\n```python\nfrom my_app import defaults\nfrom django.conf import settings\n\nclass Settings:\n    def __getattr__(self, attr):\n        try:\n            return getattr(settings, attr)\n        except AttributeError:\n            return getattr(defaults, attr)\n```\n\n## Documentation\n\n[django-app-defaults.readthedocs.io](http://django-app-defaults.readthedocs.io)\n\n## Tests\n\n```\nmake test\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitely%2Fdjango-app-defaults","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitely%2Fdjango-app-defaults","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitely%2Fdjango-app-defaults/lists"}