Skip to content

Latest commit

 

History

History
51 lines (31 loc) · 4.46 KB

Python+Django.md

File metadata and controls

51 lines (31 loc) · 4.46 KB

Рекомендации к пет-проекту на Django

Данный документ содержит рекомендации по разработке на django.

Разделяйте логику проекта на несколько приложений

Не пишите всё монолитно в пределах одного приложения. Для реализаций, имеющих разную суть, изолируйтесь на разные приложения.

Например:

  • Пользователи системы — приложение users;
  • Магазин — приложение shop;
  • Заказы — приложение order.

Не меняйте ORM

Многие разработчики пытаются использовать другую ORM вместо встроенной, поставляемой фреймворком. Забудьте об этом, так как это ужасная и даже глупая практика.

Фреймворк имеет свою прекрасную и отличную ORM, которая, как минимум, является его неотъемлемой частью; за счёт чего, при её выпиливании, вы просто ломаете фреймворк.

Используйте F-выражения

Этот механизм позволит Вам взаимодействовать всегда с актуальными данными базы, не создавая коллизий и ломающих перерасчётов.

ORM — не панацея

Помните, что ORM это как минимум ещё 1 уровень абстракции, который при сложных вычислениях может повлиять на производительность.

Кроме того, в сложных запросах на выборку с группировкой или объединением, а также подобным им, может генерировать не совсем отзывчивые sql-запросы, что, в таком случае лучше воздержаться от ORM и использовать "сырой" sql.

Категоричней к админке

В джанге есть прекрасная и великолепная встроенная админка, но увы для продакшена она, мягко говоря, не очень. Почему? Жутко не оптизимированная.

Базовый случай: если у Вас есть связи между моделями и созданные по ним записи в админке, то просто гляньте explain (описание sql запросов). Его можно посмотреть через пакет django-debug-toolbar. Там Вы увидите, как админка плодит кучу лишних запросов.

Это одна из причин, почему встроенная админка используется лишь для dev-среды, а в проде её убирают. Конечно, Вы можете заморочиться и исправить её костыли, но помните, что порой исправление чего-либо намного сложнее, чем написание с нуля.

А всё-таки представление на основе классов или функций?

Всё равно. Не имеет значение что Вы используете, больше ценится то, что Вы умеете использовать в общих ситуациях готовые решения, а в исключительных писать кастомную логику.

Научитесь работать с БД правильно

Если Вам не знакомо понятие "Вычисление QuerySet" или Вы не знаете разницы между функцией len() и методом count() у orm-объекта, то Вам нужно прочитать эту документацию. Большой плюс, если Вы знаете тонкости этой работы, да и в целом, это очень полезное руководство, если хотите разбираться во фреймворке лучше.