TGViewer
Django Python Django Python @django_pythonl · 6.62K subscribers
Post #379 2.66K
✔️ Лови полезный Django-совет, который спасает продакшен чаще, чем кажется.

Никогда не делай тяжёлую логику в Django views.

Новички часто пихают всё прямо во view:

- бизнес-логику
- валидацию
- расчёты
- работу с БД
- интеграции

В итоге получается "божественная функция" на 200 строк, которую невозможно тестировать и поддерживать.

Правильный подход — разделять слои:

- View — только принимает запрос и отдаёт ответ
- Services / use-cases — бизнес-логика
- Models — работа с данными
- Serializers / Forms — валидация

Плохо:


def create_order(request):
user = request.user
items = request.data['items']
total = 0
for item in items:
product = Product.objects.get(id=item['id'])
total += product.price * item['qty']
order = Order.objects.create(user=user, total=total)
...


Лучше:


# services/order_service.py
def create_order(user, items):
total = calculate_total(items)
return Order.objects.create(user=user, total=total)

# views.py
def create_order_view(request):
order = create_order(request.user, request.data['items'])
return Response({"id": order.id})


Почему это важно:

• проще тестировать

• код переиспользуется

• view не превращается в монстра

• легче менять логику, не трогая API

Django не заставляет делать так, но большие проекты без этого долго не живут.
More from @django_pythonl
  1. Sep 13, 2026🔥 Django Q() objects — один из самых полезных инструментов ORM, который многие используют…
  2. Sep 11, 2026🔥 Хак в Django: Meta.indexes можно использовать для собственных миграций Оказывается, mod…
  3. Aug 31, 2026Нечёткий поиск в Django + PostgreSQL можно сделать намного умнее обычного icontains. В Cak…
  4. Aug 14, 2026🐍 Django-разработчикам: `DEBUG=True` в проде опаснее, чем кажется. Это не просто красивые…
  5. Aug 8, 2026🚀 Django 6.1 вышел: меньше магии, больше контроля Новая версия Django приносит улучшения…
  6. Jul 22, 2026⚡️ django-orjson ускоряет работу Django с JSON Adam Johnson выпустил библиотеку django-orj…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →