Django Python
7.21K subscribers
111 photos
5 videos
3 files
261 links
Django

Вопросы @haarrp

all questions to @haarrp

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books

@hr_itwork-работа
Download Telegram
5 распространённых ошибок в Django

1️⃣ Вы не используете select_related и prefetch_related для FK и M2M запросов
Ошибка: Неоптимизированные запросы к базе данных при работе с внешними ключами и многими ко многим, что приводит к неэффективным запросам (проблема N+1).

2️⃣ Недооценка возможностей Django Admin
Ошибка: Недостаточное использование мощных функций интерфейса администрирования Django.

3️⃣ Обращение с QuerySets как с обычными списками
Ошибка: Неправильное понимание работы QuerySets, что приводит к лишним запросам к базе данных.

4️⃣ Неверное обслуживание статических и медиа-файлов
Ошибка: Использование Django для обслуживания статических и медиа-файлов в продакшене.

5️⃣ Использование `.all() с большими или неупорядоченными наборами данных
Ошибка: Использование .all() на моделях без дефолтного порядка или с большими наборами данных, что приводит к проблемам с производительностью.
Forwarded from Python/ django
👩‍💻 Wowy — это шаблон интернет-магазина, построенный на Django 4.x, который предоставляет полный набор функций для управления!

🌟 Она обеспечивает удобный пользовательский интерфейс и мощную панель администратора. Включает поддержку управления товарами (с множеством изображений), управление категориями, корзину, список желаний, генерацию PDF-счетов и детальную аналитику продаж.

🔐 Лицензия: MIT

🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 DeepMesh – это исследовательский проект, направленный на создание высококачественных 3D-мешей с помощью методов глубокого обучения.

🟢Глубокое обучение для 3D-реконструкции: Проект использует нейросетевые методы для обучения неявных представлений объектов, что позволяет реконструировать гладкие и точные поверхности даже из разрежённых данных (например, облаков точек).

🟢Алгоритмы извлечения мешей: После получения неявной функции, описывающей форму объекта, применяются алгоритмы, такие как Marching Cubes, для извлечения явной 3D-сетки.

🟢Инструменты для визуализации и экспериментов: Репозиторий включает код для обучения моделей, проведения экспериментов и визуализации результатов, что облегчает воспроизведение исследований и применение метода в различных задачах компьютерного зрения и графики.

🟢Потенциал применения: Такой подход может быть полезен для задач реконструкции объектов, симуляции, компьютерной графики и дополненной реальности, где требуется точное представление сложных форм.

📌 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Основные нововведения в Django 5.2

1. 📦 Автоматический импорт моделей в интерактивной оболочке
Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются.

Это упрощает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробностей об импортированных объектах можно использовать флаг -v 2.​

2. 🔗 Поддержка составных первичных ключей
Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений.​

3. 🧩 Гибкая настройка BoundField в формах
Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это предоставляет разработчикам более тонкий контроль над отображением и поведением форм.​


4. Расширенная асинхронная поддержка
Django продолжает движение в сторону асинхронности, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений.​

5. 🎨 Новые виджеты форм и улучшения интерфейса
Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями.​
Bastaki Software Solutions L.L.C-FZ

6. 🗃️ Улучшения в работе с базой данных

Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve.

По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3.

Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке.​

🔧 Совместимость и поддержка
Django 5.2 поддерживает Python версий 3.10–3.13.

С выходом этой версии, основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2.

Django 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой.

📥 Обновление и ресурсы
Загрузить Django 5.2 можно с официальной страницы загрузки или через PyPI.

Полные примечания к релизу доступны в официальной документации.

Для автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade.​
Django Project

Django 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии.

📌 Релиз
Ваш первый бэкенд на Django — пошаговый учебник

Бесплатный самоучитель по Django, созданный специально для новичков. Шаг за шагом вы создадите веб-приложение (блог) на Python с использованием фреймворка Django.

По ходу дела объясняются все необходимые основы — от базового Python до шаблонов HTML/CSS. К концу у вас будет собственный рабочий блог на сервере и понимание принципов бэкенд-разработки.

#бэкенд #python #django
Курс по разработке бэкенда приложений на Django

Мир веб-разработки не стоит на месте, и умение создавать крепкие бэкенды становится всё нужнее. Особенно когда можно собрать своё первое API-приложение уже на старте.

Ловите курс по Django, где прокачивается всё: от Git и настройки окружения до развёртывания проекта на сервер и тестирования через Pytest. А ещё отдельно разбираются темы вроде CI/CD, работы с базами данных через ORM и правильной архитектуры кода.

Если хочется разобраться, как строятся реальные бэкенд-сервисы на Django — заглядываем на этот курс.

#курс #backend #web #django #ru
📚 Django Styleguide — готовый гайд по архитектуре проектов для Django-разработки, основанные на опыте коммерческих проектов. Здесь сделан акцент на разделение бизнес-логики: сервисы для записи данных, селекторы для чтения и чёткие правила валидации в моделях.

Особенно полезен среди прочих раздел про обработку ошибок в DRF и примеры тестирования сложных сценариев. Авторы предлагают адаптировать подходы под конкретные задачи, а полный пример проекта вынесен в отдельный репозиторий.

🤖 GitHub
🚀 TurboDRF — ускоритель Django REST Framework без боли

TurboDRF — лёгкий способ ускорить ваш Django API без перехода на FastAPI или переписывания логики.

🔥 Что даёт TurboDRF:
Быстрый рендер сериализаторов
🧠 Автоматический prefetch_related и select_related
🧊 Кэширование сериализованных ответов
🧩 Совместим с обычными DRF-сериализаторами

📦 Установка:

pip install turbodrf


🛠️ Пример:

from turbodrf.mixins import TurboModelSerializer

class MySerializer(TurboModelSerializer):
class Meta:
model = MyModel
fields = "__all__"


Идеален для больших Django-проектов, где важна скорость ответа.

🔗 GitHub: https://github.com/alexandercollins/turbodrf
This media is not supported in your browser
VIEW IN TELEGRAM
♻️ Garbage Collector в Python — как он реально работает

Python сам управляет памятью, но делает это не одним, а двумя способами одновременно:

1⃣ Подсчёт ссылок (Reference Counting)

Каждый объект в Python хранит число ссылок на себя:

import sys

a = []
print(sys.getrefcount(a)) # покажет количество ссылок на объект


📝 Когда ссылок становится 0 — объект немедленно удаляется, и память освобождается.
Быстро и просто.

❗️ Проблема: не справляется с циклическими ссылками:

a = []
a.append(a) # теперь объект содержит ссылку на себя


2⃣ Поколенческий сборщик мусора (Generational GC)

Чтобы находить такие циклы, Python использует модуль gc. Все объекты отслеживаются по «возрасту»:
📝 Поколение 0 — новые объекты
📝 Поколение 1 — выжили после первой сборки
📝 Поколение 2 — считаются «старожилами»

Чем старше объект, тем реже его проверяют, чтобы не тратить ресурсы:

import gc

gc.collect() # вручную запустить сборку мусора
gc.get_count() # сколько объектов в каждом поколении
gc.get_threshold() # когда запускать сборку


Почему это важно:
📝 GC работает фоном и почти незаметно, но может вызвать лаги, если не оптимизировать.
📝 Вы можете влиять на GC: отключать, настраивать пороги, анализировать поведение.
📝 В больших проектах с долгоживущими объектами важно знать, в каком поколении что живёт.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие базы данных поддерживает Django?

PostgreSQL и MySQL, SQLite и Oracle. Помимо этого, Django также поддерживает такие базы данных, как ODBC, Microsoft SQL Server, IBM DB2, SAP SQL Anywhere и Firebird с использованием сторонних пакетов. Примечание: официально Django не поддерживает базы данных no-SQL.
🎯 django-rls — декларативный Row-Level Security для Django + PostgreSQL

Пакет от [kdpisda](https://github.com/kdpisda/django-rls), который позволяет удобно задавать политики Row-Level Security (RLS) прямо внутри моделей Django — с генерацией SQL-политик на этапе makemigrations.

🔐 Основные возможности:
- Объявление RLS-политик в моделях (через класс `RLS`)
- Автоматическая генерация SQL-политик при миграциях
- Поддержка многотенантности (tenant_id)
- Совместимость с Django ORM и PostgreSQL

📦 Пример использования:


class Invoice(RLSModel):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)

class RLS:
policies = [
RLSPolicy(
name="tenant_isolation",
using="customer_id = current_setting('myapp.tenant_id')::integer"
)
]

📌 При makemigrations будут сгенерированы команды:

sql

CREATE POLICY tenant_isolation ON invoice
USING (customer_id = current_setting('myapp.tenant_id')::integer);
ALTER TABLE invoice ENABLE ROW LEVEL SECURITY;
🛠️ Установка:

bash

pip install django-rls
📚 Документация и исходники:

GitHub → github.com/kdpisda/django-rls

Идеально для: Django-проектов с многотенантной архитектурой и требованиями к безопасности на уровне данных.
🔍 Silk — мощный инструмент для профилирования Django-приложений в реальном времени. Этот open-source проект перехватывает HTTP-запросы, SQL-запросы и позволяет детально анализировать производительность вашего кода через удобный веб-интерфейс.

Инструмент обладает возможностью профилирования отдельных участков кода через декораторы и контекст-менеджеры. Инструмент особенно полезен при поиске узких мест в производительности, анализе сложных SQL-запросов и оптимизации времени отклика приложения.

🤖 GitHub
🎂 Django празднует 20 лет — вспоминаем историю

Самый первый коммит в публичный репозиторий Django состоялся 15 июля 2005 года. Сегодня, 15 июля 2025-го, отмечаем этот важный юбилей!

13 июля 2005 года Джейкоб Каплан-Мосс сделал первый коммит в публичный репозиторий, который позже стал Django. С тех пор прошло 20 лет и более 400 релизов. Сегодня отмечаем круглую дату любимого веб-фреймворка.

К юбилею опубликован доклад Django Origins, впервые показанный 10 лет назад на праздновании десятилетия Django в Лоренсе, Канзас. В нём — история создания фреймворка, ранние идеи и проекты, построенные на нём, а также немного цифровой археологии.

https://simonwillison.net/2025/Jul/13/django-birthday/
🔥 WaterCrawl — продвинутая платформа для веб-краулинга и подготовки данных под LLM

Если нужно собрать и структурировать контент с сайтов для ИИ — это мощный инструмент.

🧠 В основе:
— Django + Scrapy + Celery
— Асинхронный краулинг, API и UI
— Скриншоты, PDF, JS-рендер, SSE

🚀 Возможности:
— Быстрый запуск через Docker (`docker compose up`)
— Интеграции с Dify, n8n, Langflow
— Пакетная отправка запросов через REST API
— SDK для Python, Go, Node, PHP

⚙️ Репозитории
🖥 Разбираем Новые версии: Django 5.2.5 и Python 3.13.6

Django 5.2.5 (релиз — 6 августа 2025)
- Тип релиза: патч-релиз, устраняющий ошибки версии 5.2.4.
- Ключевые исправления:
- Восстановлена поддержка стратегии UNNEST в QuerySet.bulk_create() для PostgreSQL.
- Улучшена фильтрация по составному первичному ключу через tuple-выражения.
- Исправлены ошибки валидации модели при использовании GeneratedField, Q и Case.
- Добавлена совместимость с docutils версии 0.22.
- Исправлен сбой при использовании ManyToManyField с составным первичным ключом — обновлены проверки fields.E347.

Python 3.13.6 (релиз — 6 августа 2025)
- Тип релиза: шестой maintenance-релиз ветки 3.13, включает около 200 исправлений, улучшений сборки и обновлений документации.
- Ключевые особенности Python 3.13 по сравнению с 3.12:
- Новый усовершенствованный REPL с многострочным редактированием, цветным выводом и цветными трассировками ошибок.
- Экспериментальный free-threaded build mode (отключение GIL), доступен в виде python3.13t`/`python3.13t.exe.
- Встроенный экспериментальный JIT-компилятор (по-умолчанию отключён).
- locals() теперь имеет определённые семантики при мутации возвращаемого словаря.
- Включена изменённая версия mimalloc (по-умолчанию, если доступно), обязательна для free-threaded режима.
- Докстринги теперь очищаются от начальной отступной, что снижает объём `.pyc`-файлов.
- Новый бэкенд dbm.sqlite3 используется по умолчанию при создании файлов.
- Минимальная поддерживаемая версия macOS повысилась до 10.13 (High Sierra).
- Безопасность:
- Исправлена проблема, при которой фильтры filter="data" и filter="tar" в tarfile можно было обойти с помощью специально созданных сим- и жёстких ссылок.

Вывод:
- Django 5.2.5 — важный патч-релиз LTS-ветки, рекомендован для обновления производственных систем.
- Python 3.13.6 — очередной maintenance-релиз с множеством багфиксов и улучшений, особенно интересен разработчикам, работающим с производительностью (REPL, JIT, free-threaded).

Если нужно, могу подсказать, как безопасно обновиться или протестировать эти версии в вашем проекте.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Limekit — кроссплатформенный GUI-фреймворк на Lua

Хочешь писать десктоп-приложения без Python и компиляции?
С Limekit всё просто: «написал один раз — запускай везде» (Windows, macOS, Linux).

Что умеет:
- Чистый Lua API, без необходимости знать Python
- 40+ встроенных виджетов, поддержка Material Design и тёмной темы
- Запуск без сборки — достаточно Python и самого фреймворка
- Много примеров и документация на ReadTheDocs
- Полностью опенсорс (GPLv3)

📌 Минимальный пример:

local window = Window{title='Limekit app'}
window:show()

Две строки кода — и у тебя уже готовое окно 🚀

⚡️GitHub
🔍 Django ModelSearch: Умный поиск для ваших моделей

Django ModelSearch позволяет индексировать модели Django и осуществлять поиск с использованием ORM. Поддерживает PostgreSQL FTS, SQLite FTS5, а также Elasticsearch и OpenSearch. Идеально подходит для создания мощных поисковых решений.

🚀Основные моменты:
- Индексация моделей в Elasticsearch и OpenSearch
- Поддержка автозаполнения и фацетного поиска
- Повторное использование существующих QuerySets
- Поддержка нечеткого и фразового поиска
- Нулевая простоя при перестройке индекса

📌 GitHub: https://github.com/kaedroho/django-modelsearch