Как стать автором
Поиск
Написать публикацию
Обновить
4.73

Django *

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

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

Обратный звонок с сайта: соединяем пользователя с компанией автоматически через Callback API

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров183

Привет, Хабр. Это Екатерина Саяпина, менеджер продукта в МТС Exolve.
Сегодня покажу, как реализовать анонимный обратный звонок с сайта через Callback API — ни клиент, ни менеджер не видят номера друг друга, соединение идёт через виртуальный номер. Всё на Django, просто и надёжно.

Читать далее

Новости

Меньше нагрузки — больше запросов: искусство кеширования API

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

Привет! Меня зовут Дима, я Backend-разработчик в Doubletapp. В этой статье расскажу про кеширование API (на примере Django Ninja): чем оно полезно бизнесу и когда его стоит внедрять.

Когда ваш продукт начинает расти, а пользователей становится всё больше, любой повторяющийся запрос к серверу — это лишняя нагрузка. Даже если человек просто обновил страницу или несколько пользователей задали один и тот же вопрос приложению, сервер отвечает заново — и тратит на это ресурсы.

А теперь представьте: вы можете обрабатывать одновременно в несколько раз больше запросов пользователей без расширения ресурсов и без переписывания ядра продукта. Как? С помощью кеширования — подхода, который «запоминает» одинаковые запросы и снижает нагрузку на сервер.

Содержание

Серверный кеш (хранилища «ключ-значение»)
Клиентский кеш (браузер, прокси)
Условные HTTP‑запросы
Промежуточное кеширование (CDN, reverse proxy)

Читать далее

Просветление через Код: Суть Django Revolution

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

Django Revolution — это не просто инструмент, это философия. Философия, где рутина уступает место творчеству, а баги растворяются в чистоте кода. Это путь к просветлению в разработке API. Примите его, и ваш код будет сиять, а дух разработчика — парить.

Наш мир, сотканный из битов и фантомных сущностей, породил нового Джинна, способного исполнять самые заветные желания Разработчика. Встречайте: Django Revolution – не просто библиотека, а откровение, мантра, ключ к вратам истинного дзен в мире Django API.

Читать далее

Как я встраивал wysiwyg редактор в свой django проект

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

Разрабатывая сервис генерации AI курсов, я столкнулся с тем, что мне захотелось решить вопрос с удобным редактированием уроков.

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

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

Читать далее

Django-easy-audit – быстрый способ собирать базовые продуктовые метрики

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров337

Спустя месяц после запуска своего pet-проекта прошла волна первых активных регистраций. Теперь встал вопрос отслеживания их вовлеченности. С базовыми метриками все понятно, а как реализовать технически? Делюсь своим маленьким скромным кейсом.

Читать далее

Как я собираю AI-интервьюера, чтобы имитировать собеседования

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

Несколько месяцев назад я поймал себя на мысли: я знаю свою профессию, читаю статьи, работаю в команде — но сто́ит заговорить о собеседованиях, появляется напряжение. Да, я не один такой: стресс, туманные ожидания от интервьюеров, неочевидные слабые места в знаниях. Решил попробовать подойти к подготовке иначе — с помощью AI. Ну все сейчас хотят ко всяким GPT по разным нуждам.

Читать далее

Как в Django реализовать заполнение профиля пользователя через Google

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров727

Эта статья продолжает пост, в котором был рассмотрен один из алгоритмов аутентификации пользователя через платформу Google. Сейчас мы дополним ее механизмом заполнения профиля пользователя данными из Google-аккаунта. Хотелось бы подчеркнуть, что в обеих статьях рассматривается только один из алгоритмов. Он, на мой взгляд, наиболее понятен для начинающих разработчиков, хотя существуют и другие способы. О них можно узнать из документации Django.

Проведя аутентификацию через Google, мы получили только стандартные данные - идентификатор и имя пользователя. Но можно получить и другие, в частности, email, возраст, информацию о себе и т.д.

Реализуем в проекте собственный сервис (pipeline) и добавим в пакет приложения authapp соответствующий модуль (pipeline.py):

Читать далее

Мой набор для Django

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

Обнаружил у себя довольно внушительный набор инструментов, разработанных для Django в разное время и для разных целей. Все инструменты под лицензией LGPL, и почти все так или иначе используются в активных проектах. Возможно, какие-то из них окажутся полезны вам, поэтому хочу рассказать о них в этой - кратко, - и возможно, последующих подробных статьях по каким-то из инструментов отдельно.

Читать далее

Как в 2025 году в Django реализовать аутентификацию через Google

Время на прочтение3 мин
Количество просмотров1.8K

Аутентификация через сторонние сервисы осуществляется на базе протокола OAuth 2.0, который поддерживается библиотекой Python Social Auth Django.

Для начала нам нужно установить библиотеку social-auth-core и дополнительную библиотеку social-auth-app-django для интеграции этой системы регистрации/аутентификации в Django. Оба компонента мы указали в списке зависимостей проекта в файле requirements.txt:

Читать далее

Оптимизация запросов в Django. Подробное руководство

Уровень сложностиСложный
Время на прочтение60 мин
Количество просмотров4.8K

Привет, хабр! В данной статье хочу рассказать больше чем обычно про оптимизацию запросов к базе данных в Django. Расскажу о том, как не только запрашивать, но и создавать или обновлять записи в базе. В статье будет много примеров, генерируемый SQL, типы данных, индексы и выводы планировщика запросов.

Данная статья подходит как для начинающих, так и для достаточно опытных разработчиков на django, а также для всех, кто еще не интересовался, что происходит под капотом ORM.

Читать далее

От кнопки до продакшена: как мы делаем Telegram Mini Apps

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров8.7K

Привет! Мы Дима и Илья, работаем в команде ТМА-разработки Doubletapp и расскажем, как создать Telegram Mini App на стеке React + Python.

Telegram Mini Apps — это мощный инструмент, который позволяет создавать интерактивные веб-приложения, работающие прямо внутри мессенджера. Они идеально подходят для игр, маркетплейсов, сервисов бронирования и многого другого.

В этом туториале мы разберем процесс создания Mini App:

настроим проект
создадим фронтенд на React с поддержкой Telegram SDK
реализуем бэкенд на Python (Django)
свяжем все компоненты и развернем приложение.

Читать далее

DRF captcha своими руками

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров622

Пришла мне тут по работе задача сделать возможность добавления товара в корзину пользователем без авторизации. Корзина, причем должна храниться на бэке для того, чтобы можно было проводить аналитику по неоформленным заказам, а также, если пользователь авторизуется, то добавлять эту корзину к его профилю для доступности ее с любых других устройств, на которых он (пользователь авторизован).
Ясное дело, что для корзины одного пользователя в сеансе оформления заказа нужен уникальный идентификатор, по которому можно определить в какую “корзину” поместить товар.

Так как на проекте мы использует REST подход к проектированию API, я подумал, что можно генерировать uuid ключ на клиенте и передавать его при каждом запросе добавления товара в корзину.

Да, все бы хорошо, но возникает потенциальная проблема паразитных запросов от недоброжелателей. Да, безусловно, есть куча всяких способов защититься от троттлинга, но все это кажется мне в этой ситуации не совсем уместным. Поэтому, я решил, что лучше уникальный идентификатор генерировать на бэкенде, а выдавать его при прохождении CAPTCHA.

Читать далее

Кастомизация Django Admin с django-unfold

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

Привет, Хабр. Изучая безграничные просторы интернета интернета, заметил явное отсутствие обучающих статей на тему кастомизации админ-панели в /Django/, а уж поверьте. Её довольно старое для современных рамокстилизация — не приговор. И делается это буквально в пару кликов, без лишнего .css кода. На который как раз таки гайдов полно. Зачем засорять папку со статическими файлами лишним кодом, если можно сделать это в пару кликов.

Главное преимущества /Python/, заключается в том, то что пишется на других язык программирования в десять строк, можно написать на нашем любимом языке в две строчки. Поэтому варианты с самостоятельной кастомизацией, затрагивать не будем. Хотя данная библиотека, не ограничивает вас в написание своего кода для кастомизации. Всё написанное, лишь подключенная библиотека на /Python/ для /Django/.

Читать далее

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

Некоторые неочевидные особенности Django ORM (filter и exclude)

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

TLDR: В статье рассказывается о некоторых особенностях Django ORM, а именно, как при неправильном использовании некоторых встроенных методов (filter(), exclude()) можно незаметно, но очень больно, выстрелить себе в ногу при работе со связями many-to-many и one-to-many (связь, обратная к FK). Статья может быть полезной не слишком искушенному в тонкостях Django ORM разработчику.

Интересно...

Умный подход к оптимизации Django

Время на прочтение4 мин
Количество просмотров1K
Однажды я увидел этот пост и вспомнил, как оказался однажды в похожей ситуации — но в моём случае требовалось разобраться со строковыми операциями в нашей виртуальной машине. В настоящее время этот проект уже не функционирует, но код остался в открытом доступе. Давайте ненадолго перенесёмся в прошлое.

Шёл 2018 год, и я как раз присоединился к команде, которая поднимала новую среду выполнения для Python (тогда её прозвали Pyro, а теперь она называется Skybison). Была поставлена цель: опираясь на 30-летний опыт инженерных исследований в инженерии VM и народную мудрость заново спроектировать всё с нуля, чтобы получилась система с высокой производительностью. Важное уточнение: мы могли применять только одну кодировку строк: UTF-8 [1] (с прицелом на будущее).
Читать дальше →

backup Django

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

Короче, начал делать проект на Django с нуля, и вообще впервые с ним работаю (noob). Соответственно с нейронками в паре, так как сам в Django не особо шарю, и они делают почти всё за меня (условно). Но поскольку нейросети любят переписывать код по-своему, периодически всё ломается: и код, и база, и остальная разная нечисть🌚

В итоге решил делать бэкапы вместе с нейронками — может, кому-то пригодится.

Да, я в курсе, что есть django-dbbackup, контроль версий и куча других тем, но мне пока так удобнее. Дальше — больше. Делюсь этим скорее для таких же новичков, как я. Вдруг будет полезно⤵️

Читать backup django

Как я строю удобную инфраструктуру вокруг Python-проектов: линтеры, Poetry, CI/CD и Docker

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

Poetry вместо pip, Ruff вместо flake8, FastAPI вместо ручной документации. Что реально упрощает жизнь Python-разработчику сегодня — на примерах и с реальными конфигами.

Читать далее

Как создавать A/B-тесты SMS-рассылок с нейросетью DeepSeek

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров907

Привет, Хабр. В этой статье поможем владельцам бизнесов и маркетологам в два клика с помощью нейросети получить хорошие тексты для A/B-тестирования SMS-рассылок и разослать выбранные варианты контактам из CRM.

Для генерации текстов используем API DeepSeek, для рассылок — SMS API от МТС Exolve, а контакты берём из CRM-системы «Битрикс24».

Читать далее

F(), Func() и никаких циклов: как Django думает в SQL

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

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

Сегодня рассмотрим, как использовать F()-экспрессии и Func()-обёртки в Django для того, чтобы выполнять арифметику, условия и преобразования не в Python, а на стороне базы данных. Один SQL-запрос может заменить десятки строк кода не теряя в качестве кода.

Читать далее

Пробуем Codex CLI от OpenAI для доработки ХрюХрюКара

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

Пару дней назад я опубликовал статью про ХрюХрюКар - телегам-бот для борьбы со стоянкой автомобилей на зелёных зонах. Проект с открытым исходным кодом.

За два дня ко мне обратилось несколько сторонников с просьбой добавить их города. Но вот незадача: у меня была возможность через админ-панель Django править данные в базе, но об этом кеш сервера не узнает (основной бекэнд на Go). В результате приходилось добавлять данные и перезагружать контейнеры с go-бекэндом вручную.

Основные серверы ХХК уже имели сторы, которые получают и обрабатывают апдейты, прилетающие через redis.

По сути, оставалось внести правки в часть django-бэкенда, чтобы обрабатывать сигналы pre_save и pre_delete, сериализовать данные и отправлять их в нужный канал редиса.

Решил поручить эту задачу Codex CLI, которую вчера OpenAI представили нам с вами. 

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

Вклад авторов