But as we add new features, as our dev team grows & the software needs to be stable on production, things can get quite messy.
We are going to look at some common patterns, derived from experience, on how to structure your Django project for scale and longevity.
Main topics are:
Django service layer or where should business logic live?
Using Django Rest Framework in a clean & repeatable way & combining it with the service layer.
Testing everything that matters, without repeating ourselves in different tests.
We are going to talk about when to rely on existing abstraction so it’s actually helpful & when to avoid existing abstraction, and code things ourselves.
The examples showed in this talk are derived from working with Django in the last 5 years on projects with:
Daily production usage & production deploys.
Dozens of apps.
Hundreds of models & APIs.
Tens of integrations working simultaneously.
Teams of 5 to 10 people.
Key takeaways from the talk:
Increased productivity when developing with Django.
Deeper understanding of the software development process with Django.
Demo project with everything mentioned in it.
The talk is great for all levels of Django knowledge - from beginners to advanced users & teams.
The main way of getting the point across is going to be by showing regular code, talking how it can get messy & then following up with examples of improving that code. Hopefully this talk will start a lot of discussion afterwards.
Breakdown of the talk:
Django service layer
Fat models or fat views?
Where do I put my business logic?
What is a service & what goes into a service?
What is a selector & what goes into a selector?
General Django structure
How many apps should I have?
Structuring your code so youр team can be more productive and have less conflicts.
Common modules & utilities.
Doing APIs with Django Rest Framework
Splitting APIs in 2 groups - “giving data” and “taking data”
Using a lot of generics for “give data”
When do to selectors?
Using no generics for “take data” (APIView + Services)
Handling errors from services
Inlining serializers & avoiding serializers reuse
A neat inline_serializer util
Introducing general error formatting for your API
Testing all of that - what should be & not be tested?
I would like to work with open source projects to create a branch of the tree with all
of the best videos for your open source project. Please
send me an email if you are interested.