As a backend developer I've tried several frameworks, yet I keep coming back to Django for new projects. It's not habit — it's arithmetic.
1. A working product on day one
“Batteries included” means auth, an admin, the ORM, migrations, forms and security (CSRF, XSS, SQL injection protection) out of the box. In a startup the first week should go into the product, not plumbing.
class Course(models.Model):
title = models.CharField(max_length=150)
is_free = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
2. The ORM is fast when used right
A “slow ORM” usually means N+1 queries. select_related and prefetch_related turn dozens of queries into two or three.
One subtle trap: with values().annotate(), the model's Meta.ordering leaks into GROUP BY and breaks the grouping. Add .order_by() before aggregating — I found and fixed exactly this bug in my portfolio's stats.
3. Multilingual by design
WeliCoDev runs in Uzbek, Russian and English: Django's i18n plus django-modeltranslation give per-language fields, managed from a single dashboard.
4. The ecosystem
- DRF — APIs for mobile and a Next.js frontend (as in NutriZone);
- Celery + Redis — background jobs: Telegram messages, scheduled posts, reminders;
- ASGI — a Telegram bot webhook and async requests in the same project.
5. In practice
I've used Django for NutriZone, ShareBooks and internal platforms. This portfolio is Django too: Telegram sign-in, video courses, homework, a music player and auto-posting to a channel.
6. The downsides
- Overkill for a tiny microservice — FastAPI is lighter there.
- Async support is still partial: most of the ORM is synchronous.
Conclusion
Django isn't perfect, but it balances simplicity, power and productivity better than most. When I need to ship fast and scale with confidence, I still pick Django.