Python Belgrade #42 :: The Django DDD Event#


Decoding DDD: A Three-Tiered Approach to Django Projects —

  • Abstract:

Every project has its unique history and limitations. In this session, I will navigate you through three levels of implementing DDD in Django, from basic to advanced. You will understand how to apply DDD to your Django project strategically and tactically and learn how to balance the costs and benefits of each level.

Level 0: Ubiquitous Language and Bounded Contexts

We’ll begin with an easy-to-implement approach, focusing on strategic DDD patterns. Then, we’ll delve into creating Ubiquitous Language and discovering Bounded Contexts through Event Storming sessions - an engaging technique to visualize and define domains collaboratively.

Level 1: DDD tactical patterns

We’ll move on to tactical patterns like entity, aggregate, repository, and domain services. Here, you’ll understand how the standard usage of Django models may lead to a lack of integrity and how DDD patterns can provide business-level integrity.

Level 2: Advanced DDD

Finally, we’ll explore advanced DDD techniques. We’ll cover how to design a domain layer in pure Python independent of the framework and why this approach can lead to cleaner, more testable code.


By the end of this talk, you will have:

A clear understanding of implementing DDD in Django projects at different levels based on your requirements.

A solid grasp of the strategic and tactical patterns in DDD and how they can improve your Django project.

Hands-on experience in creating Ubiquitous Language and discovering Bounded Contexts through Event Storming sessions.

Knowledge of how to ensure business-level integrity in your project using DDD tactical patterns.

Insights on how to write a domain layer in pure Python, independent of the framework, and how it can lead to cleaner, more testable code.


In this session, I will focus on linking theory with practical examples. Drawing from my experience refactoring a 5-year-old Django monolith, which continues to be actively developed by five different teams, I have many real-world examples to illustrate different approaches.

Thoughts on DDD in Django Projects —

  • Abstract:

Max Polezhaev will share insights on combining Django and DDD in this complementary talk. Drawing from personal experiences, Max will discuss the challenges, limitations, and unique characteristics of Django that impact DDD implementation.

The talk will discuss concrete problems and conclusions on Django’s efficient usage and alternative solutions. Max will compare Django with other frameworks in DDD implementation and share real-world experiences from a team.

Takeaways: Attendees of this talk can expect to:

Understand challenges and limitations of applying DDD in Django projects.

Learn about specific characteristics of Django impacting DDD implementation.

Discover effective utilization of Django in various project types and areas.

Gain insights into alternative frameworks for DDD implementation.

Understand real-world experiences of adopting DDD in a Django project at