⚡️ Limekit — кроссплатформенный GUI-фреймворк на Lua
Хочешь писать десктоп-приложения без Python и компиляции?
С Limekit всё просто: «написал один раз — запускай везде» (Windows, macOS, Linux).
✨ Что умеет:
- Чистый Lua API, без необходимости знать Python
- 40+ встроенных виджетов, поддержка Material Design и тёмной темы
- Запуск без сборки — достаточно Python и самого фреймворка
- Много примеров и документация на ReadTheDocs
- Полностью опенсорс (GPLv3)
📌 Минимальный пример:
Две строки кода — и у тебя уже готовое окно 🚀
⚡️GitHub
Хочешь писать десктоп-приложения без 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
Django ModelSearch позволяет индексировать модели Django и осуществлять поиск с использованием ORM. Поддерживает PostgreSQL FTS, SQLite FTS5, а также Elasticsearch и OpenSearch. Идеально подходит для создания мощных поисковых решений.
🚀Основные моменты:
- Индексация моделей в Elasticsearch и OpenSearch
- Поддержка автозаполнения и фацетного поиска
- Повторное использование существующих QuerySets
- Поддержка нечеткого и фразового поиска
- Нулевая простоя при перестройке индекса
📌 GitHub: https://github.com/kaedroho/django-modelsearch
GitHub
GitHub - kaedroho/django-modelsearch: Index Django Models with Elasticsearch or OpenSearch and query them with the ORM
Index Django Models with Elasticsearch or OpenSearch and query them with the ORM - kaedroho/django-modelsearch
🕸️ Django Tip — ускоряй сложные запросы с помощью `only()` + `defer()`
В Django ORM часто делают
💡 Лайфхак: загружай только нужные поля:
🟢 Что это даёт
⚡ Сильно ускоряет SQL-запросы (SELECT только нужные столбцы).
📉 Экономит память, так как Django не держит ненужные данные.
🔄 Поля можно подгрузить позже — при первом обращении Django сделает отдельный запрос.
💡 Совет: комбинируй 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() для тонкого контроля — так можно оптимизировать даже очень «тяжёлые» модели без переписывания логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что это:
Новый инструмент для фильтрации в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор предлагает использовать базовый класс 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Django 6.0 — уже в пути!
✨ Главное в Django 6.0
- Content Security Policy (CSP)
Новый
- Фоновые задачи
Декоратор
- Template Partials
Теги
- Обновлённое Email API
Современный
- Другие улучшения
• В админке — иконки Font Awesome
• В
• Улучшения в Postgres, GeoDjango, миграциях и др.
🔄 Изменения без обратной совместимости
- Минимальная версия MariaDB — 10.6
- Поддержка Python ≥ 3.12
-
- Удалены устаревшие API и внутренние методы
👉 Подробнее: https://docs.djangoproject.com/en/dev/releases/6.0/
#django #python
✨ Главное в 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