Обновить
17.81

Django *

Фреймворк для веб-приложений на Python

Сначала показывать
Порог рейтинга
Уровень сложности

Нулевое время простоя при миграции в Django + PostgreSQL

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.7K

СУБД PostgreSQL сейчас вероятно, является самым популярным бакендом для Django. К сожалению, у этой СУБД есть особенность - для построения индексов, она блокирует таблицу, и на время выпололнения индексирования, запись в эту таблицу оказывается недоступной, что приводит к частичной или полной неработоспособности приложения на время выполнения миграции, включающей в себя построение индекса.

Эта особенность создает проблемы с маштабированием приложения при изменении структуры данных - таблицы с большим количеством строк могут индексироваться заметное время - от нескольких минут, до часов. Все это время, приложение ограничено в функциональности, что может быть для него недопустимо.

Как решать эту проблему - описано в данной статье.

Читать далее

Новости

Как мы помогали Стэнфорду следить за акулами

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6K

Вот что для этого понадобилось: бэкендеры — 2 штуки, фронтендер — 1 штука, дизайнер — 1 штука, мобильный разработчик — 1 штука, время — 2 учебных семестра.

Продолжаем рассказывать об интересных проектах студентов Контура. В этот раз речь пойдёт о приложении для интерактивного мониторинга белых акул по заказу Стэнфордского университета. 🦈 В статье ребята рассказали, какие возможности реализовали внутри приложения, какой стек технологий выбрали и что за сложности случились на фронтенде и бэкенде.

Читать далее

С Django мы все дальше от Бога

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.1K

Я долго работал в коммерческом проекте в роли backend-разработчика с всемирно известным фреймворком Django, а также с его альтер эго - Django Rest Framework. Всегда кажется, что работать с чем-то многозвёздочном на GitHub - это кататься сыром в масле. На входе имеем: отличную документацию, отзывчивое сообщество, множество решений одной и той же проблемы, так как все уже (пред)решено...

Читать далее

Как один индекс на created_at сократил время ответа API с 12 секунд до 40 мс

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели11K

«Страница заказов грузится вечность», — такой тикет прилетел в понедельник утром. На проде 800 тысяч записей, а типичный запрос с фильтрацией и сортировкой заставлял менеджеров ждать по 12 секунд. В этой статье разберем, почему стандартный индекс по одному полю не сработал, как EXPLAIN ANALYZE помог найти «бутылочное горлышко» и почему порядок полей в составном индексе имеет решающее значение

Читать далее

Django ORM: как QuerySet ленится, цепляется и генерирует SQL

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5K

Django ORM прячет SQL за красивым Python-интерфейсом. Пишешь User.objects.filter(active=True).order_by('name')[:10] — получаешь список пользователей. Круто. Но когда запросы тормозят или N+1 пожирает базу, приходится понимать, что вообще происходит.

Разберём внутренности QuerySet: почему он ленивый, как работает chaining, когда запрос реально выполняется, и чем select_related отличается от prefetch_related на уровне SQL.

Читать далее

Флаг вам в руки: внедряем feature flags в Django

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7.2K

Привет, Хабр!

Сегодня поговорим о том, как включать и выключать функциональность в Django, не разворачивая каждый раз новый деплой. В больших проектах эту задачу решают через feature flags, такие условные флажки , которые позволяют запускать скрытые возможности лишь для части пользователей или откатывать фичи, не выкатывая заново весь код. Если вы хотите поэтапно раскатать новую функцию, сделать A/B тест или просто спрятать недоделанный модуль за переключателем, вам сюда.

Читать далее

CTE (Common Table Expression) / Django CTE

Уровень сложностиПростой
Время на прочтение20 мин
Охват и читатели13K

Как только ты начинаешь углубляться в изучение баз данных, так сразу на горизонте возникают такие понятия как подзапросы, CTE, представления и временные таблицы. По опыту работы в университете заметил, что с этими темами у людей часто возникают проблемы и недопонимания. В частности больше всего путаницы вносит именно CTE. 

Поэтому в этой статье я расскажу:

1. что такое CTE

2. зачем оно нужно 

3. что такое рекурсивные СТЕ

4. чем СТЕ отличается от временных таблиц, представлений и подзапросов

5. как СТЕ может плохо сказаться на производительности 

6. как использовать СTE в самом народном фреймворке Django

Использует SELECT со звёздочкой Макс - Lead Backend и автор YouTube-канала PyLounge. Поехали! 

Читать далее

Сервисы — место, где живет бизнес-логика II

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.8K

Здравствуйте! Это вторая часть из серии статей «Сервисы — место, где живет бизнес логика». Если Вы еще не знакомы с первой частью, то рекомендую начать с нее, чтобы у вас сложилась общая картина. Сегодня мы постараемся ответить на все оставшиеся вопросы: познакомимся с прекрасной, легковесной DI-библиотекой, научимся «инжектить» в Django, посмотрим на несколько дашбордов в Кибане и поговорим про доменные модели.

Читать далее

Параметры Python, которые должен знать питонист

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели21K

Есть числа, которые полезно знать программистам на Python. Насколько быстро добавляется элемент в список? Как насчет открытия файла? Это занимает меньше миллисекунды? Если ваш алгоритм зависит от производительности, какую структуру данных вы должны использовать? Сколько памяти занимает число с плавающей запятой, один символ или пустая строка? Насколько быстр FastAPI по сравнению с Django?

Это перевод недавней работы Michael Kennedy с подробными пояснениями для начинающих питонистов, которых нет у автора.

Читать далее

Сервисы — место, где живет бизнес-логика

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели13K

Сервисы — место, где живет бизнес-логика

Здравствуйте! Идея написать эту статью пришла мне в голову абсолютно спонтанно. Я работаю в компании и, так сложилось, что нас имеет мы имеем DRF монолит на писят два миллиона строк кода. И вот однажды, чью-то светлую голову посетила мысль — «а давайте писать код одинаково». Идея прозвучала чертвоски просто и соблазнительно. С этого момента мы завели себе ишака по имени «Django Service Layer», и все дружно начали на него наваливать. Теперь навалю и вам. Би-бу-бип.

Читать далее

Как я создал «Тунец» — платформу для попадания в ответы нейросетей с помощью нейросетей…

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8.4K

…. и программиста. 

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

Читать далее

Увольте своих программистов. Или спросите их…

Время на прочтение4 мин
Охват и читатели30K

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

В этом и есть суть современной разработки: бесконечный ремонт, замаскированный под «инновации».

Читать далее

Разбираю свой фотоархив

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели10K

Сделал поиск по личному архиву фотографий с применением трех нейросетей, векторного расширения к PostgreSQL и Django

Читать далее

Ближайшие события

Почему я отказался от ORM в пользу чистого SQL

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели19K

Во время выполнения очередного проекта мне пришлось работать с Битрикс ORM, при этом параллельно в системе был инстанс Laravel. Две разные ORM работали с единой базой данных. Не буду вдаваться в причины, по которым был выбран такой подход, и воздержусь от его оценки. Суть в том, что мне приходилось одновременно работать с двумя принципиально разными системами. Этот опыт привел меня к фундаментальному выводу: ORM — не для меня.

Почитать мнение

Я устал кликать по HH — отдал это Gemini и получил 7 инвайтов за 3 дня

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.9K

Привет, Хабр!

Давайте честно, поиск работы — это ад. Я инженер и я ненавижу рутину. А поиск работы — это 90% тупого кликанья.

Открыть 50 вкладок — 50 раз написать «Здравствуйте‑ меня заинтересовало...» — 50 раз скопировать‑вставить. Это выжигает.

Можно конечно написать автокликер, который будет спамить «пустышками». Но рекрутеры не дураки — такие отклики летят в мусор. А «ручной» режим‑ это 3–4 часа в день.

Я понял — что должен быть третий путь. Не просто автоматизация — а умная автоматизация.

Читать далее

Как собрать платный AI-микро-SaaS (Next.js + Django + ЮKassa + Web Stories) и не застрять в пет-проекте

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели12K

Большинство наших «проектов мечты» умирают не потому, что идея плохая, а потому что мы останавливаемся на уровне «ну вот, фронт есть, бэк вроде тоже, как-нибудь допилю оплаты и выложу». Не допиливаем. Потому что платежи, вебхуки, витрина, SEO, публикации — это уже не «интересный код», а «организационная скука».

Проект как раз про то, чтобы скучное сделать готовым и многоразовым. Мы один раз собираем связку: AI → Django/DRF → ЮKassa → деплой → Web Stories → SEO, а дальше в неё можно подставлять вашу идею — не только Mermaid. Mermaid здесь как манекен: на нём удобно показывать, куда вешать оплату, куда прикручивать экспорт, где пускать трафик.

Если у вас в голове крутится мысль «я бы запустил свою фичу, если бы была готовая дорожка к деньгам» — это она.

Читать далее

Почему ваш AI-ассистент пишет «вырвиглазный» код, и как это исправить грубой силой

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

Технически это называется «неконсистентный». А по-человечески — боль. Делюсь рабочим, хоть и неидеальным, способом её лечения.

Читать далее

Как стримить большие ответы в Django через StreamingHttpResponse и async-генераторы

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели8.5K

Привет, Хабр!

Сегодня рассмотрим решение одной непростой задачи, как в Django выдавать очень большие объёмы данных, например, выгрузку в CSV или потоковый JSON-формат NDJSON) так, чтобы сервер не ложился от нагрузки, а пользователи быстрее получали первые данные. Разберём, как использовать StreamingHttpResponse и генераторы (в том числе асинхронные) для стриминга больших ответов и поговорим нюансах.

Подробнее о стриминге

«Автопилот» для HeadHunter — как я потратил 100 часов на бота- чтобы сэкономить тысячи часов айтишникам на поиске работы

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.4K

Привет- Хабр!

Поиск работы – это... боль. Нет- не так. Это – ад.

Это бесконечный скроллинг- десятки открытых вкладок.

Читать далее

Не обижайте Django

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели14K

Чем популярнее становится FastAPI, тем сильнее критикуют Django. И не просто критикуют. Брезгуют? Пренебрегают? Всего понемножку. Всё чаще слышу, что Django — пережиток прошлого. Любой проект на Django — устаревший мусор. Любой «джанговод» — просто не знает, что тоже устарел. Объективно ли это? Нет, не объективно. Если отвёртка плохо забивает гвозди, это не значит, что отвёртки устарели — просто это не их задача.

Читать далее
1
23 ...