Django Python
7.24K subscribers
111 photos
5 videos
3 files
259 links
Django

Вопросы @haarrp

all questions to @haarrp

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books

@hr_itwork-работа
加入频道
Митап для QA-инженеров от MТС Web Services

📍 3 июля | 19:00
📍 Офлайн в Москве | Онлайн

О чем поговорим:
— О создании отечественного браузерстека MWS SunQ;
— Об автотестах на естественном языке;
— Об идеальном фреймворке для автоматической генерации тестов;
— О предиктивной оценке качества.

На True Tech QA выступят эксперты из MTC Web Services, Альфа-Банка и BugBuster.

Для участия зарегистрируйся по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
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

⚙️ Репозитории