A django app, that ofers abstracted logic for Django.
Project description
🛡️ Django Abstract
An Enterprise-Grade Architectural Layer for Django
Clean Architecture | Dependency Injection | CQRS Principles | Domain-Driven Design
📖 Overview
Django Abstract is a highly advanced framework built on top of Django that strictly enforces Clean Architecture and Domain-Driven Design (DDD). It solves the infamous "Fat Model / Fat View" anti-pattern by completely decoupling:
- Data Access (
Selectors/Creators) - Business Logic (
Services) - Flow Control & Permissions (
Operators/Systems)
This framework provides a unified, predictable way to scale complex Django applications, manage high-throughput operations via Redis queues, and dynamically inject dependencies.
🚀 Key Features
🧩 Global Registry & Dependency Injection
- Dynamically registers all architectural components using decorators (
@creator_selector,@register_service,@register_operator). - Injects
BaseDependencyinstances at runtime to prevent circular imports and allow test mocking. - Magic attribute resolution (
__getattr__) allows developers to resolve dependencies seamlessly (dependency.select_user).
🏛️ Strict Architectural Separation
BaseModel: Adds soft-delete, active toggles, and rich audit trails natively.BaseSelector/BaseCreator: Isolates raw Django ORM calls from business logic.BaseService: Pure business logic that operates exclusively on an abstractServiceEntryDatastate.BaseSystem: Orchestrates workflows and manages global database transactions (transaction.atomic()).
⚡ High-Throughput Background Logging
- Includes a robust
log/app that tracksSystemErrorLog,SessionMetrics, andAdminActionLog. - Uses a Redis-backed queueing system within
ModelServicesto buffer high-frequency inserts and bulk-flush (bulk_create) them to PostgreSQL, completely preventing database locking during traffic spikes.
🔌 Seamless View Binding
- Replaces traditional Django Views with
EntryBindingMixin. - Automatically extracts
session_key,ip_address, and POST/GET payloads, hydrates a masterEntryobject, and passes it directly to the orchestrationSystems.
📁 Repository Structure
src/django_abstract/
├── base/ # Core architectural base classes
├── generic/ # Generic, reusable creation/selection patterns
├── log/ # High-performance asynchronous auditing system
├── registry.py # Global Dependency Injection container
└── utilities.py # Context extraction, View Mixins, State Objects
📚 Documentation
Comprehensive documentation for every module can be found in the docs/ folder:
🧪 Testing
The repository is fully testable. Due to strict dependency injection, any Selector or Creator can be swapped out with a mock class during tests. Test stubs for all modules are located in the tests/ directory.
👨💻 Author
Designed and implemented as an enterprise architectural study to showcase advanced systems design, Python metaprogramming, and scalable Django architecture.
Project details
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_abstract-0.1.2.tar.gz.
File metadata
- Download URL: django_abstract-0.1.2.tar.gz
- Upload date:
- Size: 49.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97bf9971f6c4e636c5efdceea8b209790605fa3f02aae269dd3848de540d098a
|
|
| MD5 |
0035f1df260d02d310c04e2fbc8fdd3e
|
|
| BLAKE2b-256 |
2f0ae2c5831127c804bc8ccf733a03f4b39ffd859285b6bc858184c1e8012932
|
File details
Details for the file django_abstract-0.1.2-py3-none-any.whl.
File metadata
- Download URL: django_abstract-0.1.2-py3-none-any.whl
- Upload date:
- Size: 55.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
679e9cc43131eb39bfbcd4dddde6d8260163e2b173dfde6ed51dcf3d66f2a522
|
|
| MD5 |
e55f4b216e10b791624886424336c16f
|
|
| BLAKE2b-256 |
52d3d7c5847c0de6439a1e07f1d4377cbbe03d0aa2a18c44af3fb9b661da9e0a
|