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

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

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

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

Почему-то на сервере все зависимости Python поставлены на уровне системы вместо виртуального окружения. Это помешает …

Положите деплойный скрипт в репозиторий

Деплойный скрипт -- не одноразовый. Это часть кода, часть его поставки. Его тоже нужно будет …

Используйте метод .create() сериализатора

Сериализатор может сам создавать модели, если он унаследован от `ModelSerializer`, или если у него есть …

Используйте many=True для вложенных сериализаторов

Если вы используете сериализатор, в котором вложено несколько других сущностей, то вместо такой записи: ```py …

Используйте UPPER_CASE для переменных окружения

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

Изолируйте миграцию от остального кода

В миграциях Django ни в коем случае нельзя использовать код из models.py и прочих файлов …

Спрячьте пустой default в текстовых полях

Обычно Django кладёт `None` во все незаполненные поля модели данных. Пустой `IntegerField` — это `None`, …

Дайте токену специфичное название

Со временем в дополнение к одному API может понадобиться подключение еще нескольких. У них каждого …

Оберните атрибут тега в кавычки

HTML требует, чтобы содержимое атрибутов было обернуто в кавычки. Так неправильно: ```html ``` Так верно: …

Подготовьте шаблон к изменению URL схемы

URL схема сайта часто меняется. Так, страница может переехать с одного адреса на другой, при …

Закодируйте URL

В адресе URL разрешено использовать не так много символов. Пробелы, квадратные скобки, кириллица — все …

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

Профили настроек вроде `production`, `test` или `development` для настроек -- это хоть и популярная, но …

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

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

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

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

Настройте .gitignore

Улучшение для 3 урока Django

Уточните название резюме

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

Обработайте DoesNotExist

При вызове метода `QuerySet.get(…)` может так случиться, что искомой записи в базе не будет, и …

Добавьте блок в базовый шаблон

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

Переместите файл в статику

Все картинки на сайте делятся на две группы: статику и медиа. Первые намертво пришиты к …

Уточните критерий поиска

Если бы автоинспеция искала машины по ФИО водителя, штрафы бы постоянно приходили не тем людям. …

Используйте format_html для подстановки в HTML

Функция `format_html` в Django похожа по своим возможностям на обычное форматирование строк. Она тоже подставляет …

Уберите из админки огромные select-поля

Для полей `ForeignKey` Django в админке использует виджет ``. Он предлагает пользователю выбрать из одну …

Не используйте max_length для TextField

В Django есть два основных поля для текста: `CharField` и `TextField`. Если речь о небольшом …

Используйте verbatim на весь тег

Вы используете `{% verbatim %}`, но он захватывает какую-то рандомную область в шаблоне. Получается, что …

Настройте метод *_or_create

Оба метода и `get_or_create`, и `update_or_create` ищут записи в БД с точным совпадением по всем …

Избавьтесь от лог-файлов

Скрипт предназначенный к запуску на сервере не должен брать на себя обработку логов. Это не …

Проверьте адрес перед редиректом

С параметром `next` есть известная уязвимость: если не проверять куда вы делаете редирект, то ваш …

Соберите переменные окружения в settings.py

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

Используйте исключения из атрибутов модели

Django создаёт исключения `DoesNotExist` и `MultipleObjectsReturned` как атрибуты каждой модели, чтобы можно было обработать ошибку …

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

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

Высушите related_name

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

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

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

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

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

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

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

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

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

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

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

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

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

Запускайте migrate в самом конце

Запуск migrate может поломать ещё работающую старую версию Django. Чтобы простой сайта был меньше, лучше …

Удалите makemigrations из деплойного скрипта

Django просит вас вручную создавать все необходимые файлы специально. Ведь могла бы и генерировать их …

Отключите DEBUG на продакшн-версии сайта

Сейчас ваш сайт запущен как бы "в режиме продакшна", но у сайта включен дебаг. Из-за …

Ограничьте название резюме

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

Похвастайтесь достижениями

В опыте работы пишите не только ваш функционал (то, что вы делали), но и ваши …

Используйте list при настройке Django

Разработчики Django отказались от использования `tuple` в настройках проектов ещё начиная с версии 1.9.

deprecated
Создайте поисковый индекс

Запросы с использованием `filter` или `exclude` требуют от базы данных проверки каждой записи в таблице …

deprecated
Вынесите статику в папку static/

Для статики есть специальное место: папка `static/` в корне репозитория. Если программисту понадобится поменять что-нибудь …

deprecated
Храните только статику в static/

В папке `static/` должна лежать **только статика**. Не стоит складывать туда всё подряд, от каких-то …

deprecated