An app for a cleaner Django
Project description
Django the Domain Driven Design way
This is a proof of concept to model django apps on a domain driven design way. The idea is to move Django app related stuff under infrastructure folder, so ideally an app folder structure would be:
app_folder/
application/
domain/
infrastructure/
migrations/
admin.py
models.py
__init__.py
__init__.py
Installation
To install from source, download the source code, then run this:
python setup.py install
Or install with pip
pip install django-ddd
Configuration
Select your desired app folder structure and add these settings to your project.
CUSTOM_MODELS_MODULE
Where Django should look for your app models.
Default:
modelsExample:
infrastructure.models
CUSTOM_MIGRATIONS_MODULE
Where Django should look for your app migrations.
Default
migrationsExample:
infrastructure.migrations
CUSTOM_ADMIN_MODULE
Where Django should look for your app admin configuration.
Default
adminExample:
infrastructure.admin
Usage
To use custom locations
Install django-ddd to your project requirements and add settings so Django
can find your apps modules as seen on configuration.
You don't need to add django-ddd to INSTALLED_APPS
Then, on your package apps.py import django-ddd custom app config:
from django_ddd.apps_config import CleanAppConfig
class AppNameConfig(CleanAppConfig):
name = "app_name" # package folder name
Add your new application to INSTALLED_APPS
INSTALLED_APPS = [
# ...
"app_name.infrastructure.apps.AppNameConfig",
# ...
]
This should be done explicitly after this ticket.
To use start_clean_app
This command creates a new Django app with a Domain Driven Design structure.
To use it, you need to add django-ddd to your INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"django_ddd",
# ...
]
Then, just call:
python manage.py start_clean_app app_name
This will create a new context with previously seen structure:
app_name/
application/
domain/
infrastructure/
migrations/
admin.py
models.py
__init__.py
__init__.py
Here all Django details are under infrastructure folder. Package level __init__.py
has route to app config:
default_app_config = "app_name.infrastructure.apps.AppNaemAppConfig"
You can move this folder to your sources
and add it to INSTALLED_APPS so Django can recognize it.
Contributing / Running project locally
Build the docker image:
docker build . -t django-ddd-dev
Run tests:
docker run -v $(pwd)/.:/usr/src/app django-ddd-dev bash -c "pipenv run python manage.py test"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file Django-ddd-0.1.11.tar.gz.
File metadata
- Download URL: Django-ddd-0.1.11.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
045be877798f06f810e108b73052abbf72b8470f74187d9cebabfe99d1af0c58
|
|
| MD5 |
f5e838ff98d1c3ddb682cad210d1f352
|
|
| BLAKE2b-256 |
249f6ec8908c98dd1f4d9cea4e768bdf049a6d5af7338919dd0531fcf1c62800
|
File details
Details for the file Django_ddd-0.1.11-py3-none-any.whl.
File metadata
- Download URL: Django_ddd-0.1.11-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f6d61abc533479ad0975e72f12038378bda9b1ed036b9b60e315703fe7639c5
|
|
| MD5 |
3b88436913743605ec7d8a02bcaef5aa
|
|
| BLAKE2b-256 |
a275419366d8271facf6d2a44004ca5e679820d3ff6ed17bee5d8b7d2a795e11
|