Типичные улучшения

Для поиска по тегу начните название тега с символа '@'.

Улучшения, показаны 50 из 540.

Используйте возможности многострочной строки

Если по многострочной строке разбросаны символы переноса строки `\n`, то сложно понять как будет выглядеть …

Напишите README

В проекте вообще нет ридми

Измените настройки STATICFILES_DIRS

После `BASE_DIR` папка верхнего уровня у всех путей одна

Выберите более подходящий тип поля

В Django ORM есть отдельное поле для картинок, отдельное для файлов, для чисел всех мастей... …

Протестируйте сериализатор на пустые значения

Вам можно отправить пустой заказ, вообще без товаров. Не очень понятно как поведёт себя система …

Запретите отрицательное/нулевое количество товаров

Сейчас количество товаров в заказе может оказаться отрицательным, по крайней мере база данных такого не …

Укажите ссылку на демо-версию сайта

В README не хватает ссылки на демонстрационную версию сайта. Развёртывание публичной версии сайта было частью …

Возьмите настройки из django.conf.settings

Импорт настроек проекта напрямую из файла `settings.py` ломает механизм конфигурации Django. Проблем здесь сразу несколько. …

Высушите super()

Вы использовали старую форму записи функции `super()`, так её оформляли ещё во втором питоне. Сейчас …

Ответьте на дополнительные вопросы

При чтении работы возникли дополнительные вопросы, ответы на которые получить не удалось.

Перепроверьте утверждение

Некоторые из утверждений не верны.

Раскройте продуктовую ценность программы

В описании работы программы крайне нежелательно оперировать терминами "переменная", "функция", "цикл" и так далее. Ещё …

Замените термины с программистских на продуктовые

Во время написания документации стоит избегать терминов из прогаммирования, чтобы текст читался как можно проще. …

Используйте монотонное время

Результат вызова `time.time()` не всегда растет со временем. Операционная система сверяет свои часы с сетевыми, …

Добавьте в url pattern закрывающий слэш

В Django принято заканчивать адреса страниц слэшом `/`: `/some/page/`. Это правило позволяет избежать путаницы в …

Замените JSONField на жёсткую схему данных

Поле `JSONField` позволяет хранить в БД любую структуру данных. Иногда, это важный плюс, но чаще …

Отформатируйте длинный QuerySet

Запросы в Django ORM бывают большими и сложными. Даже десять строк кода на один запрос …

Избавьтесь от лишних обёрток

Избегайте создавать лишние "обёртки". Они хороши, когда прячут в себе сложные нетривиальные системы -- **скрывают …

Высушите related_name

В Django код запросов к БД имеет свойство распухать до неприличных размеров. И чем длиннее …

Упакуйте настройки доступа к БД в один URL

Если вы считываете настройки доступа к БД из переменных окружения, то выглядеть такой код может …

Отключите интерактивный ввод в скриптах деплоя

Скрипты деплоя нужны для автоматизации, а хорошая автоматизация должна работать быстро, тихо и незаметно. Если …

Удалите бесполезные дефолтные настройки

Дефолтные настройки нужны для того, чтобы оставлять их незаполненными и при этом ни о чём …

Не останавливайте Nginx при деплое

Остановка веб-сервера Nginx приводит к разрыву соединения с клиентом: у кого-то не подгрузится страница сайта, …

Очистите логи Rollbar от бесполезных HTTP404

Если не побеспокоиться заранее об обработке HTTP 404, то ваши логи будут завалены бесполезными сообщениями. …

Уберите дефолтное значение для SECRET_KEY

Настройка `SECRET_KEY` очень важна для django-проекта. По сути, это так называемая соль (salt), отвечающая за …

Зафиксируйте изменения в репозитории на сервере

Незакомиченные изменения могут помешать накатить очередное обновление проекта. Консольный `git` откажется обновлять код, если возникнет …

Расскажите о пользе на примере ситуации

Спросите любого в чём польза от того или иного приспособления, и собеседник сразу начнёт вспоминать …

Проиллюстрируйте то, о чём говорите

Некоторые вещи проще один раз показать, чем описывать словами. Сравните два описания: > Для работы …

Используйте декоратор @register

Это не какая-то проблема в коде, просто хотел посоветовать попробовать [декоратор @register](https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#the-register-decorator). Так регистрация моделей …

Не используйте заголовки для выделения текста

Заголовки -- это особый элемент форматирования текста. Он предназначен для выделения главной мысли в абзаце, …

Предусмотрите ошибку геокодера

Некоторые адреса геокодер будет не в состоянии распознать и функция `fetch_coordinates` вернёт `None`. Стоит заранее …

Используйте json.load

Сейчас вы считываете данные из файла строкой, а затем превращаете их в списки и словари …

Настройте проброс данных через реверс-прокси

Реверс-прокси -- это посредник, задача которого "передать" запрос от внешнего клиента ко внутреннему веб-сервису. При …

Вынесите конфиг наружу Dockerfile

Концепция контейнеризации приложений делит процесс поставки кода на два этапа, и у каждого из них …

Переместите сборку фронтенда внутрь Dockerfile

Контейнеризация с помощью Docker требует разделить поставку приложения на две фазы: сборка и запуск. За …

Избавьтесь от лишних стадий сборки Dockerfile

Multi-stage builds -- это отличный инструмент, уменьшающий размер итогового образа. А чем меньше образ, тем …

Отключите фоновую сборку фронтенда на сервере

Сборщики фронтенда, такие как Webpack и Parcel, поставляются вместе с отладочным сервером на Node.js, умеющем …

Включите подсветку синтаксиса

Код на питоне удобнее читать, если в нём есть подсветка синтаксиса. Сравните: +++ Без подсветки …

Разделите конфиги docker compose для разных окружений

Как для запуска приложения в local-окружении на машине разработчика, так и на серверах вам понадобятся …

Замените Dockerfile на стандартный образ

Каждый новый Docker-образ усложняет поддержку приложения. Дело здесь не в экономии места на сервере, и …

Почините QuerySet chaining

Методы `QuerySet` возвращают либо итоговое число/объект, либо новый `QuerySet`. Этот новый QuerySet позволяет продолжить настройку …

Используйте терминологию Python

В Python нет "массивов", вместо них используют "списки". То же самое со словарями: это теперь …

Высушите название поля

В Django код запросов к БД имеет свойство распухать до неприличных размеров. И чем длиннее …

Вынесите настройку ALLOWED_HOSTS

В файле settings.py есть настройка `ALLOWED_HOSTS`, она нужна для безопасности вашего сайта, защищает вас от …

Прервите исполнение bash-скрипта при сбое

Bash-скрипты имеют одну неочевидную особенность: сбой первой команды не отменяет вторую и третью, и они …

Не просите менять настройки в файлах репозитория

Локальные настройки проекта не должны попасть в общий репозиторий. Самый простой и надёжный способ этого …

Не путайте date, time и datetime

`date` -- это дата, например, `01.01.2001`. `time` -- время, например, `18:45:15`. `datetime` -- это когда …

Избавьтесь от самописных примесей (mixins)

Mixins – это худшее, что может случиться с вашим кодом. Они подрывают стабильность кода, усложняют …