
Попросили рассказать про этот пакет, чем я и займусь.
Пакет Django-Leaflet-Admin-List позволяет добавить карту со всеми географическими объектами на странице в отображение списка в админке Django.
Фреймворк для веб-приложений на Python
Попросили рассказать про этот пакет, чем я и займусь.
Пакет Django-Leaflet-Admin-List позволяет добавить карту со всеми географическими объектами на странице в отображение списка в админке Django.
Система заказов: решаем проблему конкуренции без очередей
При разработке локального маркетплейса Django, и одна из задач, с которой пришлось поработать — это система бронирования товаров при создании заказа. Согласно требованиям, система должна уметь бронировать товары за покупателем, давать ему немного времени на оплату, а потом — если он не успел — освобождать эти товары для других.
Сначала стояла «заглушка»: при каждом новом заказе «на лету» агрегировали данные из базы — проверяли, хватает ли товара на складе с учетом уже оформленных заказов. Такой подход часто используют на старте, когда нужно быстро запустить MVP. Понимали, что при росте нагрузки он не масштабируется: возможны блокировки, гонки и overbooking. Пока писали другие части системы, держали это в голове и ждали, когда дойдут руки, чтобы заменить агрегацию на более устойчивое решение. Мы рассмотрели возможные варианты, и всё свелось к двум основным подходам. Дальше расскажем, как выбирали между ними и к чему в итоге пришли.
Привет, Хабр. Это Екатерина Саяпина, менеджер продукта в МТС Exolve.
Сегодня покажу, как реализовать анонимный обратный звонок с сайта через Callback API — ни клиент, ни менеджер не видят номера друг друга, соединение идёт через виртуальный номер. Всё на Django, просто и надёжно.
Привет! Меня зовут Дима, я Backend-разработчик в Doubletapp. В этой статье расскажу про кеширование API (на примере Django Ninja): чем оно полезно бизнесу и когда его стоит внедрять.
Когда ваш продукт начинает расти, а пользователей становится всё больше, любой повторяющийся запрос к серверу — это лишняя нагрузка. Даже если человек просто обновил страницу или несколько пользователей задали один и тот же вопрос приложению, сервер отвечает заново — и тратит на это ресурсы.
А теперь представьте: вы можете обрабатывать одновременно в несколько раз больше запросов пользователей без расширения ресурсов и без переписывания ядра продукта. Как? С помощью кеширования — подхода, который «запоминает» одинаковые запросы и снижает нагрузку на сервер.
Содержание
• Серверный кеш (хранилища «ключ-значение»)
• Клиентский кеш (браузер, прокси)
• Условные HTTP‑запросы
• Промежуточное кеширование (CDN, reverse proxy)
Django Revolution — это не просто инструмент, это философия. Философия, где рутина уступает место творчеству, а баги растворяются в чистоте кода. Это путь к просветлению в разработке API. Примите его, и ваш код будет сиять, а дух разработчика — парить.
Наш мир, сотканный из битов и фантомных сущностей, породил нового Джинна, способного исполнять самые заветные желания Разработчика. Встречайте: Django Revolution – не просто библиотека, а откровение, мантра, ключ к вратам истинного дзен в мире Django API.
Разрабатывая сервис генерации AI курсов, я столкнулся с тем, что мне захотелось решить вопрос с удобным редактированием уроков.
В моем сервисе есть два режима создания курсов - AI режим, это когда ты пишешь промпт или прикладываешь список тем, а нейросеть генерирует контент. Это подходит для самообучения. А второй режим для авторов - ты можешь взять свои наработки, скормить их вместе с промптом модели, а та выдаст результат. Так вот чтобы поделиться с другими юзерами таким курсом, хотелось бы иметь возможность отредактировать ответ модели, дополнить самому, да еще и оформить это все красиво, с заголовками, отступами, списками и прочими украшательствами.
Почитав разные статьи про то, какие есть редакторы, я остановился на TinyMCE.
Спустя месяц после запуска своего pet-проекта прошла волна первых активных регистраций. Теперь встал вопрос отслеживания их вовлеченности. С базовыми метриками все понятно, а как реализовать технически? Делюсь своим маленьким скромным кейсом.
Несколько месяцев назад я поймал себя на мысли: я знаю свою профессию, читаю статьи, работаю в команде — но сто́ит заговорить о собеседованиях, появляется напряжение. Да, я не один такой: стресс, туманные ожидания от интервьюеров, неочевидные слабые места в знаниях. Решил попробовать подойти к подготовке иначе — с помощью AI. Ну все сейчас хотят ко всяким GPT по разным нуждам.
Эта статья продолжает пост, в котором был рассмотрен один из алгоритмов аутентификации пользователя через платформу Google. Сейчас мы дополним ее механизмом заполнения профиля пользователя данными из Google-аккаунта. Хотелось бы подчеркнуть, что в обеих статьях рассматривается только один из алгоритмов. Он, на мой взгляд, наиболее понятен для начинающих разработчиков, хотя существуют и другие способы. О них можно узнать из документации Django.
Проведя аутентификацию через Google, мы получили только стандартные данные - идентификатор и имя пользователя. Но можно получить и другие, в частности, email, возраст, информацию о себе и т.д.
Реализуем в проекте собственный сервис (pipeline) и добавим в пакет приложения authapp соответствующий модуль (pipeline.py):
Обнаружил у себя довольно внушительный набор инструментов, разработанных для Django в разное время и для разных целей. Все инструменты под лицензией LGPL, и почти все так или иначе используются в активных проектах. Возможно, какие-то из них окажутся полезны вам, поэтому хочу рассказать о них в этой - кратко, - и возможно, последующих подробных статьях по каким-то из инструментов отдельно.
Аутентификация через сторонние сервисы осуществляется на базе протокола OAuth 2.0, который поддерживается библиотекой Python Social Auth Django.
Для начала нам нужно установить библиотеку social-auth-core и дополнительную библиотеку social-auth-app-django для интеграции этой системы регистрации/аутентификации в Django. Оба компонента мы указали в списке зависимостей проекта в файле requirements.txt:
Привет, хабр! В данной статье хочу рассказать больше чем обычно про оптимизацию запросов к базе данных в Django. Расскажу о том, как не только запрашивать, но и создавать или обновлять записи в базе. В статье будет много примеров, генерируемый SQL, типы данных, индексы и выводы планировщика запросов.
Данная статья подходит как для начинающих, так и для достаточно опытных разработчиков на django, а также для всех, кто еще не интересовался, что происходит под капотом ORM.
Привет! Мы Дима и Илья, работаем в команде ТМА-разработки Doubletapp и расскажем, как создать Telegram Mini App на стеке React + Python.
Telegram Mini Apps — это мощный инструмент, который позволяет создавать интерактивные веб-приложения, работающие прямо внутри мессенджера. Они идеально подходят для игр, маркетплейсов, сервисов бронирования и многого другого.
В этом туториале мы разберем процесс создания Mini App:
• настроим проект
• создадим фронтенд на React с поддержкой Telegram SDK
• реализуем бэкенд на Python (Django)
• свяжем все компоненты и развернем приложение.
Пришла мне тут по работе задача сделать возможность добавления товара в корзину пользователем без авторизации. Корзина, причем должна храниться на бэке для того, чтобы можно было проводить аналитику по неоформленным заказам, а также, если пользователь авторизуется, то добавлять эту корзину к его профилю для доступности ее с любых других устройств, на которых он (пользователь авторизован).
Ясное дело, что для корзины одного пользователя в сеансе оформления заказа нужен уникальный идентификатор, по которому можно определить в какую “корзину” поместить товар.
Так как на проекте мы использует REST подход к проектированию API, я подумал, что можно генерировать uuid
ключ на клиенте и передавать его при каждом запросе добавления товара в корзину.
Да, все бы хорошо, но возникает потенциальная проблема паразитных запросов от недоброжелателей. Да, безусловно, есть куча всяких способов защититься от троттлинга, но все это кажется мне в этой ситуации не совсем уместным. Поэтому, я решил, что лучше уникальный идентификатор генерировать на бэкенде, а выдавать его при прохождении CAPTCHA.
Привет, Хабр. Изучая безграничные просторы интернета интернета, заметил явное отсутствие обучающих статей на тему кастомизации админ-панели в /Django/, а уж поверьте. Её довольно старое для современных рамокстилизация — не приговор. И делается это буквально в пару кликов, без лишнего .css кода. На который как раз таки гайдов полно. Зачем засорять папку со статическими файлами лишним кодом, если можно сделать это в пару кликов.
Главное преимущества /Python/, заключается в том, то что пишется на других язык программирования в десять строк, можно написать на нашем любимом языке в две строчки. Поэтому варианты с самостоятельной кастомизацией, затрагивать не будем. Хотя данная библиотека, не ограничивает вас в написание своего кода для кастомизации. Всё написанное, лишь подключенная библиотека на /Python/ для /Django/.
TLDR: В статье рассказывается о некоторых особенностях Django ORM, а именно, как при неправильном использовании некоторых встроенных методов (filter(), exclude()) можно незаметно, но очень больно, выстрелить себе в ногу при работе со связями many-to-many и one-to-many (связь, обратная к FK). Статья может быть полезной не слишком искушенному в тонкостях Django ORM разработчику.
Короче, начал делать проект на Django с нуля, и вообще впервые с ним работаю (noob). Соответственно с нейронками в паре, так как сам в Django не особо шарю, и они делают почти всё за меня (условно). Но поскольку нейросети любят переписывать код по-своему, периодически всё ломается: и код, и база, и остальная разная нечисть🌚
В итоге решил делать бэкапы вместе с нейронками — может, кому-то пригодится.
Да, я в курсе, что есть django-dbbackup
, контроль версий и куча других тем, но мне пока так удобнее. Дальше — больше. Делюсь этим скорее для таких же новичков, как я. Вдруг будет полезно⤵️
Poetry вместо pip, Ruff вместо flake8, FastAPI вместо ручной документации. Что реально упрощает жизнь Python-разработчику сегодня — на примерах и с реальными конфигами.
Привет, Хабр. В этой статье поможем владельцам бизнесов и маркетологам в два клика с помощью нейросети получить хорошие тексты для A/B-тестирования SMS-рассылок и разослать выбранные варианты контактам из CRM.
Для генерации текстов используем API DeepSeek, для рассылок — SMS API от МТС Exolve, а контакты берём из CRM-системы «Битрикс24».