<p align="center">
<img src="https://raw.githubusercontent.com/sobolevn/django-split-settings/master/docs/_static/logo-black.png"
alt="django-split-settings logo">
</p>
---
[![wemake.services](https://img.shields.io/badge/%20-wemake.services-green.svg?label=%20&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAbUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F%2F%2F5TvxDIAAAAIdFJOUwAjRA8xXANAL%2Bv0SAAAADNJREFUGNNjYCAIOJjRBdBFWMkVQeGzcHAwksJnAPPZGOGAASzPzAEHEGVsLExQwE7YswCb7AFZSF3bbAAAAABJRU5ErkJggg%3D%3D)](https://wemake.services)
[![test](https://github.com/wemake-services/django-split-settings/actions/workflows/test.yml/badge.svg?branch=master&event=push)](https://github.com/wemake-services/django-split-settings/actions/workflows/test.yml)
[![codecov](https://codecov.io/gh/sobolevn/django-split-settings/branch/master/graph/badge.svg)](https://codecov.io/gh/sobolevn/django-split-settings)
[![Docs](https://readthedocs.org/projects/django-split-settings/badge/?version=latest)](http://django-split-settings.readthedocs.io/en/latest/?badge=latest)
[![Python Version](https://img.shields.io/pypi/pyversions/django-split-settings.svg)](https://pypi.org/project/django-split-settings/)
[![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide)
Organize Django settings into multiple files and directories. Easily
override and modify settings. Use wildcards in settings file paths
and mark settings files as optional.
Read [this blog post](https://sobolevn.me/2017/04/managing-djangos-settings)
for more information.
Also, check this [example project](https://github.com/wemake-services/wemake-django-template).
## Requirements
While this package will most likely work with the most versions of `django`, we [officially support](https://github.com/sobolevn/django-split-settings/blob/master/.github/workflows/test.yml):
- 4.2
- 5.0
- 5.1
This package has no dependencies itself.
In case you need older `python` / `django` versions support,
then consider using older versions of `django-split-settings`.
## Installation
```bash
pip install django-split-settings
```
## Usage
Replace your existing `settings.py` with a list of components that
make up your Django settings. Preferably create a settings package
that contains all the files.
Here's a minimal example:
```python
from split_settings.tools import optional, include
include(
'components/base.py',
'components/database.py',
optional('local_settings.py')
)
```
In the example, the files `base.py` and `database.py` are included
in that order from the subdirectory called `components/`.
`local_settings.py` in the same directory is included if it exists.
**Note:** The local context is passed on to each file, so each
following file can access and modify the settings declared in the
previous files.
We also made an in-depth [tutorial](https://sobolevn.me/2017/04/managing-djangos-settings).
## Tips and tricks
You can use wildcards in file paths:
```python
include('components/my_app/*.py')
```
Note that files are included in the order that `glob` returns them,
probably in the same order as what `ls -U` would list them. The
files are NOT in alphabetical order.
You can modify common settings in environment settings simply importing them
```python
# local_settings.py
from components.base import INSTALLED_APPS
INSTALLED_APPS += (
'raven.contrib.django.raven_compat',
)
```
## Updating `BASE_DIR`
The `django create-project` command will create a variable in your `settings.py` called `BASE_DIR`, which is often used to locate static files, media files, and templates.
```python
# Created by django create-project
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles/")
MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles/")
```
The expression for `BASE_DIR` means: get the path to the current file (`settings.py`), get the parent folder (whatever you named your project), get the parent folder (the root of the project). So `STATIC_ROOT` will then be evaluated to `/staticfiles` (with `/` meaning the root of your project/repo).
With `django-split-settings` `settings` is now a module (instead of a file), so `os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` will evaluate to `/whatever-you-named-your-project` as opposed to `/`.
To fix this `BASE_DIR` needs to be set to the parent folder of `/whatever-you-named-your-project`:
```python
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
```
## Do you want to contribute?
Read the [CONTRIBUTING.md](https://github.com/sobolevn/django-split-settings/blob/master/CONTRIBUTING.md) file.
## Version history
See [CHANGELOG.md](https://github.com/sobolevn/django-split-settings/blob/master/CHANGELOG.md) file.
Raw data
{
"_id": null,
"home_page": "https://django-split-settings.readthedocs.io",
"name": "django-split-settings",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "django, settings, configuration, config",
"author": "sobolevn",
"author_email": "mail@sobolevn.me",
"download_url": "https://files.pythonhosted.org/packages/de/b9/1c13089454afd7a42d492b8aa8a0c7e49eeca58c0f2ad331f361a067c876/django_split_settings-1.3.2.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/sobolevn/django-split-settings/master/docs/_static/logo-black.png\"\n alt=\"django-split-settings logo\">\n</p>\n\n---\n\n[![wemake.services](https://img.shields.io/badge/%20-wemake.services-green.svg?label=%20&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAbUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F%2F%2F5TvxDIAAAAIdFJOUwAjRA8xXANAL%2Bv0SAAAADNJREFUGNNjYCAIOJjRBdBFWMkVQeGzcHAwksJnAPPZGOGAASzPzAEHEGVsLExQwE7YswCb7AFZSF3bbAAAAABJRU5ErkJggg%3D%3D)](https://wemake.services)\n[![test](https://github.com/wemake-services/django-split-settings/actions/workflows/test.yml/badge.svg?branch=master&event=push)](https://github.com/wemake-services/django-split-settings/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/sobolevn/django-split-settings/branch/master/graph/badge.svg)](https://codecov.io/gh/sobolevn/django-split-settings)\n[![Docs](https://readthedocs.org/projects/django-split-settings/badge/?version=latest)](http://django-split-settings.readthedocs.io/en/latest/?badge=latest)\n[![Python Version](https://img.shields.io/pypi/pyversions/django-split-settings.svg)](https://pypi.org/project/django-split-settings/)\n[![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide)\n\n\n\nOrganize Django settings into multiple files and directories. Easily\noverride and modify settings. Use wildcards in settings file paths\nand mark settings files as optional.\n\nRead [this blog post](https://sobolevn.me/2017/04/managing-djangos-settings)\nfor more information.\nAlso, check this [example project](https://github.com/wemake-services/wemake-django-template).\n\n\n## Requirements\n\nWhile this package will most likely work with the most versions of `django`, we [officially support](https://github.com/sobolevn/django-split-settings/blob/master/.github/workflows/test.yml):\n\n- 4.2\n- 5.0\n- 5.1\n\nThis package has no dependencies itself.\n\nIn case you need older `python` / `django` versions support,\nthen consider using older versions of `django-split-settings`.\n\n\n## Installation\n\n```bash\npip install django-split-settings\n```\n\n\n## Usage\n\nReplace your existing `settings.py` with a list of components that\nmake up your Django settings. Preferably create a settings package\nthat contains all the files.\n\nHere's a minimal example:\n\n```python\nfrom split_settings.tools import optional, include\n\ninclude(\n 'components/base.py',\n 'components/database.py',\n optional('local_settings.py')\n)\n```\n\nIn the example, the files `base.py` and `database.py` are included\nin that order from the subdirectory called `components/`.\n`local_settings.py` in the same directory is included if it exists.\n\n**Note:** The local context is passed on to each file, so each\nfollowing file can access and modify the settings declared in the\nprevious files.\n\nWe also made an in-depth [tutorial](https://sobolevn.me/2017/04/managing-djangos-settings).\n\n\n## Tips and tricks\n\nYou can use wildcards in file paths:\n\n```python\ninclude('components/my_app/*.py')\n```\n\nNote that files are included in the order that `glob` returns them,\nprobably in the same order as what `ls -U` would list them. The\nfiles are NOT in alphabetical order.\n\nYou can modify common settings in environment settings simply importing them\n\n```python\n# local_settings.py\nfrom components.base import INSTALLED_APPS\n\nINSTALLED_APPS += (\n 'raven.contrib.django.raven_compat',\n)\n```\n\n\n## Updating `BASE_DIR`\n\nThe `django create-project` command will create a variable in your `settings.py` called `BASE_DIR`, which is often used to locate static files, media files, and templates.\n\n```python\n# Created by django create-project\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\nSTATIC_ROOT = os.path.join(BASE_DIR, \"staticfiles/\")\nMEDIA_ROOT = os.path.join(BASE_DIR, \"mediafiles/\")\n```\n\nThe expression for `BASE_DIR` means: get the path to the current file (`settings.py`), get the parent folder (whatever you named your project), get the parent folder (the root of the project). So `STATIC_ROOT` will then be evaluated to `/staticfiles` (with `/` meaning the root of your project/repo).\n\nWith `django-split-settings` `settings` is now a module (instead of a file), so `os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` will evaluate to `/whatever-you-named-your-project` as opposed to `/`.\n\nTo fix this `BASE_DIR` needs to be set to the parent folder of `/whatever-you-named-your-project`:\n\n```python\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))\n```\n\n## Do you want to contribute?\n\nRead the [CONTRIBUTING.md](https://github.com/sobolevn/django-split-settings/blob/master/CONTRIBUTING.md) file.\n\n\n## Version history\n\nSee [CHANGELOG.md](https://github.com/sobolevn/django-split-settings/blob/master/CHANGELOG.md) file.\n",
"bugtrack_url": null,
"license": "BSD-2-Clause",
"summary": "Organize Django settings into multiple files and directories. Easily override and modify settings. Use wildcards and optional settings files.",
"version": "1.3.2",
"project_urls": {
"Funding": "https://github.com/sponsors/wemake-services",
"Homepage": "https://django-split-settings.readthedocs.io",
"Repository": "https://github.com/sobolevn/django-split-settings"
},
"split_keywords": [
"django",
" settings",
" configuration",
" config"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6369d94db8dac55bcfb6b3243578a3096cfda6c42ea5da292c36919768152ec6",
"md5": "c06d6d4bf3b8dc83e295fd86dc2e4e13",
"sha256": "72bd7dd9f12602585681074d1f859643fb4f6b196b584688fab86bdd73a57dff"
},
"downloads": -1,
"filename": "django_split_settings-1.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c06d6d4bf3b8dc83e295fd86dc2e4e13",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 6435,
"upload_time": "2024-07-05T14:29:59",
"upload_time_iso_8601": "2024-07-05T14:29:59.756365Z",
"url": "https://files.pythonhosted.org/packages/63/69/d94db8dac55bcfb6b3243578a3096cfda6c42ea5da292c36919768152ec6/django_split_settings-1.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "deb91c13089454afd7a42d492b8aa8a0c7e49eeca58c0f2ad331f361a067c876",
"md5": "a51b6266e7aa2307ba213c7c14188d69",
"sha256": "d3975aa3601e37f65c59b9977b6bcb1de8bc27496930054078589c7d56998a9d"
},
"downloads": -1,
"filename": "django_split_settings-1.3.2.tar.gz",
"has_sig": false,
"md5_digest": "a51b6266e7aa2307ba213c7c14188d69",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 5751,
"upload_time": "2024-07-05T14:30:05",
"upload_time_iso_8601": "2024-07-05T14:30:05.997090Z",
"url": "https://files.pythonhosted.org/packages/de/b9/1c13089454afd7a42d492b8aa8a0c7e49eeca58c0f2ad331f361a067c876/django_split_settings-1.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-05 14:30:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sponsors",
"github_project": "wemake-services",
"github_not_found": true,
"lcname": "django-split-settings"
}