Python_Times
231 subscribers
154 photos
7 videos
8 files
253 links
Мемы про Python? Или Python для мемов?

Подписывайся: мы знаем, как развлечь тебя и твоих коллег #forever_young #forever_python

По рекламе: @cyberJohnny
Download Telegram
Ваш первый бэкенд на Django — пошаговое руководство

Бесплатный курс по Django (https://tutorial.djangogirls.org/), разработанный специально для начинающих. Постепенно вы создадите веб-приложение (блог) на Python, используя фреймворк Django.

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

#бэкенд #python #django

@python_times
Курс по созданию бэкенда приложений на Django

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

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

Если вы хотите понять, как создаются реальные бэкенд-сервисы на Django, присоединяйтесь к этому курсу ().

#курс #backend #web #django #ru

@python_times

https://stepik.org/course/155057/promo?search=7002355898
📚 Django Styleguide — это готовое руководство по архитектуре проектов для разработки на Django, основанное на опыте работы с коммерческими проектами. В нём уделяется особое внимание разделению бизнес-логики: сервисы используются для записи данных, селекторы — для чтения, а в моделях применяются чёткие правила валидации.

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

🤖 GitHub (https://github.com/HackSoftware/Django-Styleguide)

@python_times
🚀 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

@python_times
Какие базы данных поддерживает Django?

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

@python_times
🎯 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-проектов с многотенантной архитектурой и требованиями к безопасности на уровне данных.

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

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

🤖 GitHub (https://github.com/jazzband/django-silk)

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

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

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

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

https://simonwillison.net/2025/Jul/13/django-birthday/

@python_times
🔥 WaterCrawl — продвинутая платформа для веб-краулинга и подготовки данных под LLM

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

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

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

⚙️ Репозитории (https://github.com/watercrawl/WaterCrawl)

@python_times
🖥 Разбираем Новые версии: Django 5.2.5 (https://docs.djangoproject.com/en/5.2/releases/5.2.5/)и Python 3.13.6 (https://docs.python.org/3/whatsnew/changelog.html#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).

Если нужно, могу подсказать, как безопасно обновиться или протестировать эти версии в вашем проекте.

@python_times
⚡️ 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 (https://github.com/mitosisX/Limekit)

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

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

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

📌 GitHub:

@python_times

https://github.com/kaedroho/django-modelsearch
🕸️ Django Tip — ускоряй сложные запросы с помощью `only()` + `defer()`

В Django ORM часто делают Model.objects.all(), вытаскивая все поля модели. Но если таблица тяжёлая, это съедает кучу памяти и тормозит.

💡 Лайфхак: загружай только нужные поля:


# Вместо этого
users = User.objects.all()

# Сделай так
users = User.objects.only("id", "username")
А если нужно отложить подгрузку дорогих полей (например, JSON или TextField):




users = User.objects.defer("profile_data", "settings_blob")

🟢 Что это даёт

Сильно ускоряет SQL-запросы (SELECT только нужные столбцы).
📉 Экономит память, так как Django не держит ненужные данные.
🔄 Поля можно подгрузить позже — при первом обращении Django сделает отдельный запрос.

💡 Совет: комбинируй only() и defer() для тонкого контроля — так можно оптимизировать даже очень «тяжёлые» модели без переписывания логики.

@python_times
🖥 rest-filters — фильтрационный бэкенд для Django REST framework

Что это:
Новый инструмент для фильтрации в DRF, который расширяет возможности стандартного django-filter.

Особенности
- Использует serializer-поля для разбора и валидации (без Django-форм и виджетов)
- Поддержка группировки фильтров для гибкой логики
- Constraint system — проверка взаимозависимостей между параметрами
- Вложенные фильтры (nested filters) для работы со сложными структурами


Последний релиз — v0.6.0 (21 августа 2025)
- Возможность указывать группу по умолчанию для всего FilterSet (в том числе глобально)
- Поддержка subgroups для более сложных связей между фильтрами
- Новый метод FilterSet.get_combinator() для динамического выбора способа объединения фильтров
- ⚠️ Breaking change: теперь Entry нельзя создавать без указания группы

Почему стоит попробовать
Если стандартные фильтры Django REST кажутся ограниченными, rest-filters даёт:
- фильтрацию через сериализаторы,
- сложные сценарии с группировками и вложенностью,
- гибкость и расширяемость.

🔗 Репозиторий: https://github.com/realsuayip/rest-filters

@python_times
🔥 Как я пишу Django views

Автор предлагает использовать базовый класс Django View вместо generic class-based views (CBV) или function-based views (FBV). Такой подход даёт простоту и гибкость при работе с HTTP-запросами. Отказ от сложных миксинов и использование понятных вспомогательных методов делает код более читаемым и сопровождаемым, снижая когнитивную нагрузку на разработчика.

Ключевые идеи

- В Django есть два популярных способа писать views: FBV (функции) и CBV (классы, включая generic views).
- Generic CBV часто содержат слишком много "магии": базовые классы, миксины, переопределяемые методы — их трудно держать в голове.
- FBV наглядны, но при усложнении логики код превращается в большие конструкции if request.method == ....
- Автор выбирает компромисс: использовать базовый класс View.
- Код остаётся простым.
- Логика neatly разделяется по методам (`get`, post и др.).
- Неподдерживаемые методы автоматически возвращают 405 (Method Not Allowed).

Пример

Вместо функции с if request.method:


class CommentFormView(View):
def get(self, request, post_id, *args, **kwargs):
post = get_object_or_404(Post, pk=post_id)
form = CommentForm()
return TemplateResponse(request, "form.html", {"form": form, "post": post})

def post(self, request, post_id, *args, **kwargs):
post = get_object_or_404(Post, pk=post_id)
form = CommentForm(data=request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
comment.save()
return redirect(post)
return TemplateResponse(request, "form.html", {"form": form, "post": post})


👉 Источник: https://loopwerk.io/articles/2025/django-views/

@python_times
🚀 Django 6.0 — уже в пути!

Главное в Django 6.0
- Content Security Policy (CSP)
Новый ContentSecurityPolicyMiddleware, теги csp() и настройки SECURE_CSP / SECURE_CSP_REPORT_ONLY.
- Фоновые задачи
Декоратор @task и метод enqueue() для простого запуска background jobs.
- Template Partials
Теги {% partialdef %} и {% partial %} для переиспользуемых фрагментов в шаблонах.
- Обновлённое Email API
Современный EmailMessage вместо устаревших MIME-классов.
- Другие улучшения
• В админке — иконки Font Awesome
• В auth увеличены итерации PBKDF2
• Улучшения в Postgres, GeoDjango, миграциях и др.

🔄 Изменения без обратной совместимости
- Минимальная версия MariaDB — 10.6
- Поддержка Python ≥ 3.12
- DEFAULT_AUTO_FIELD теперь всегда BigAutoField
- Удалены устаревшие API и внутренние методы

👉 Подробнее: https://docs.djangoproject.com/en/dev/releases/6.0/

#django #python

@python_times
Профессиональный гайд по работе с ChatGPT (2025)

Как использовать ChatGPT не просто как «умного собеседника», а как полноценного помощника для программирования, маркетинга, аналитики и обучения?

Мы разберём, какие версии модели существуют, какие плагины открывают новые возможности, как строить промпты так, чтобы получать точные и полезные ответы, и как интегрировать ChatGPT в рабочие процессы.

Если у вас нет доступа к chatgpt можете использовать бесплатного бота в телеге (https://t.me/Chatgpturbobot?start=231125267), чтобы потестить все техники из статьи или воспользоваться обычной версией с помощью всем известного обхода блокировки.

Не будем тянуть время, Поехали!

📌 Гайд (https://uproger.com/professionalnyj-gajd-po-rabote-s-chatgpt-2025/)

@python_times
👩‍💻 django-cors-headers (https://github.com/adamchainz/django-cors-headers) — Django-приложение для обработки заголовков Cross-Origin Resource Sharing (CORS)!

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

🌟 Инструмент позволяет гибко управлять настройками CORS, включая поддержку конкретных методов, заголовков и настроек безопасности. Например, вы можете настроить разрешение только для определённых доменов или включить временный доступ для локальной разработки. Однако важно понимать риски, связанные с CORS, поскольку неправильная конфигурация может открыть доступ к вашим данным для нежелательных источников.

🔐 Лицензия: MIT

🖥 Github (https://github.com/adamchainz/django-cors-headers)

@python_job_interview

@python_times
Почему «Async Django» часто решает не ту проблему

Django теперь умеет ASGI и async-views, но автор статьи отмечает: переход на async сам по себе почти ничего не ускоряет. Чтобы получить выгоду, весь код должен быть переписан под асинхронность, а в реальных проектах прирост обычно минимальный.

Где async реально нужен?
В задачах с большим количеством ожидания: внешние API, WebSockets, стриминг ответов. Там async даёт ощутимую экономию.

Но есть нюанс:
Django стал «двухрежимным» фреймворком - синхронные и асинхронные части живут рядом, усложняя архитектуру. ORM всё ещё в основном синхронная, и это становится бутылочным горлышком.

Поэтому для большинства проектов выгоднее оставить sync Django и вынести тяжёлые операции в фоновые задачи (Celery, RQ). Это проще, надёжнее и предсказуемее.

Итог:
Async Django - круто с инженерной точки зрения, но бизнес-ценность есть далеко не в каждом сценарии. Для большинства приложений классический Django остаётся лучшим выбором.


https://www.loopwerk.io/articles/2025/async-django-why/

@python_times