Михаил Омельченко | AI&IT
5.28K subscribers
976 photos
192 videos
4 files
713 links
ИИ в работе, разработка, веб. Агенты, автоматизация, инструменты. Веду я, Михаил Омельченко, внешний технический директор по ИИ и ментор.

Менторство, реклама и сотрудничество: djwoms.ru
Telegram - @DJWOMS
YouTube - https://www.youtube.com/c/DjangoSchool
Download Telegram
Новый рабочий угол.
Отпуск кончился (
🔥26👍9
😎 В проект GSpot (видео на канале выходят) для доработки сервиса users нужны 2 - 3 человека.

Если есть желание помочь и прокачаться, то welcome.

Требования:
- DRF
- JWT
- Git
- Docker

Остальному научим😎

Пишите в комментариях, я с вами свяжусь.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
ADRF - асинхронная поддержка для Django REST framework.

Python 3.8+
Django 4.1+

GitHub


🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS

#django #drf #djangorestframework
👍14🔥3
Django и полнотекстовый поиск

Функции базы данных в модуле django.contrib.postgres.search облегчают использование модуля PostgreSQL full text search engine.

search
Обычным способом использования полнотекстового поиска является поиск одного термина по одному столбцу в базе данных.
Например:
Entry.objects.filter(body_text__search='Cheese')

[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]

Будет создан to_tsvector в базе данных из поля body_text и plainto_tsquery из поискового термина 'Cheese', оба используют конфигурацию поиска в базе данных по умолчанию. Результаты получаются путем сопоставления запроса и вектора.

Чтобы использовать search, 'django.contrib.postgres' должен быть указан в вашем INSTALLED_APPS.

SearchVector

class SearchVector(*expressions, config=None, weight=None)

Поиск по одному полю является отличным, но довольно ограниченным.
Экземпляры Entry, которые мы ищем, принадлежат Blog, который имеет поле tagline.
Чтобы выполнить запрос по обоим полям, используйте SearchVector:

from django.contrib.postgres.search import SearchVector

Entry.objects.annotate(
search=SearchVector('body_text',
'blog__tagline')
).filter(search='Cheese')

[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]

Аргументами SearchVector могут быть любые Expression или имя поля. Несколько аргументов будут объединены вместе с помощью пробела, чтобы поисковый документ включал их все.

Объекты SearchVector можно объединять вместе, что позволяет использовать их повторно. Например:

Entry.objects.annotate(
search=SearchVector('body_text') +
SearchVector('blog__tagline')
).filter(search='Cheese')

[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]


🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS

#django #orm
🔥12👍3❤1
GSpot - скоро будет новые видео😎
Пятничный мит как обычно!
🔥9👍1
🙈Когда решил купить домен по дешевке.
🤯11😁3🫡1
Starlette-Admin — это быстрый, красивый и расширяемый фреймворк административного интерфейса для приложений Starlette/FastApi.

Демонстрация

Функции:

📍CRUD любых данных
📍Автоматическая проверка форм
📍Поиск и фильтрация
📍Подсветка поиска
📍Экспорт данных в CSV/EXCEL/PDF
📍Аутентификация
📍Авторизация
📍Управление файлами
📍Поддерживаемые ORM
👉 SQLAlchemy
👉 SQLModel
👉 MongoEngine
👉 ODMantic
📍И другое

GitHub


🔥Провожу индивидуальные занятия по python и веб разработке (django, drf, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS

#fastapi #starlette #admin
👍12
Django и полнотекстовый поиск #2

SearchQuery

SearchQuery переводит предоставленные пользователем термины в объект поискового запроса, который база данных сравнивает с поисковым вектором. По умолчанию все слова, предоставленные пользователем, пропускаются через алгоритмы стемминга, а затем ищутся совпадения для всех полученных терминов.

Если search_type равно 'plain', что является значением по умолчанию, термины рассматриваются как отдельные ключевые слова.

Если search_type равно 'phrase', то термины рассматриваются как одна фраза.

Если search_type - это 'raw', то вы можете предоставить форматированный поисковый запрос с терминами и операторами.

Если search_type равно 'websearch', то вы можете предоставить форматированный поисковый запрос, подобный тому, который используется поисковыми системами.

Для работы 'websearch' требуется PostgreSQL ≥ 11. Прочитайте статью Full Text Search docs в PostgreSQL, чтобы узнать о различиях и синтаксисе.

Примеры:
>>> from django.contrib.postgres.search import SearchQuery

>>> SearchQuery('red tomato') # two keywords

>>> SearchQuery('tomato red') # same results as above

>>> SearchQuery('red tomato', search_type='phrase') # a phrase

>>> SearchQuery('tomato red', search_type='phrase') # a different phrase

>>> SearchQuery("'tomato' & ('red' | 'green')", search_type='raw') # boolean operators

>>> SearchQuery("'tomato' ('red' OR 'green')", search_type='websearch') # websearch operators

SearchQuery термины могут быть объединены логически для обеспечения большей гибкости:

>>> from django.contrib.postgres.search import SearchQuery

>>> SearchQuery('meat') & SearchQuery('cheese') # AND

>>> SearchQuery('meat') | SearchQuery('cheese') # OR

>>> ~SearchQuery('meat') # NOT


🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS


#django #orm #searchquery
👍11🔥2
Классы и декораторы для использования FastAPI с маршрутизацией на основе классов.

При создании более сложных приложений FastAPI вы можете часто повторять одни и те же зависимости в нескольких связанных маршрутах.

fastapi_class предоставляет class-based view декоратор @View, помогающий решить эту проблему.

Исходный код


🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS

#fastapi #fastapi_class
👍7
Всем привет 👋

Вы наверняка слышали о проекте GSpot. Так вот, в данный проект требуются еще разработчики.

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

Также стартует новый проект JunovNet.

В который можно попасть после 1-ой - 2-х недель участия в GSpot. Требуется желание и время для выполнения поставленных задач😎

Команда состоит из back и front разработчиков, тестировщиков, devops и дизайнера.

Максимально краткое описание проекта JunovNet.

Проект представляет собой веб-приложение для ментора и менти, которое позволяет управлять списком студентов, расписанием занятий, домашними заданиями и дополнительными материалами.
Приложение также интегрируется с Google Календарем для удобства управления расписанием.
Интеграция с Telegram.

Телеграм бот для уведомлений и управления аккаунтом.

Поиск open source проекта в котором можно принять участие.
Создание команды и поиска участников для развития проекта.
Интеграция с GitHub.

Но это не всё, ТЗ написано на 27 страниц и это не конец👀
Проект большой с большим количеством функционала. Хватит на всех и надолго.

В JunovNet можно себя проявить и прокачать:
📍В реализации архитектуры.
📍В выборе инструментов.
📍В реализация сервисов.
📍В решение сложных задач.
📍В понимании и применении паттернов.
📍В код ревью.
📍В написании тестов.
📍В командной работе (можно даже стать лидом).
📍В ораторском искусстве.

Бэкендерам

Нужно знать для GSpot:
📍DRF
📍PostgreSQL
📍Docker
📍Git

Для JunovNet нужно быть знакомым с:
📍FastAPI
📍PostgreSQL
📍Docker
📍Git

Будет плюсом или мы научим😎
📍Redis
📍RabbitMQ
📍Masonite
📍Masonite ORM
📍SQLAlchemy
📍python dependency injector


Фронтенд

Нужно знать для GSpot:
📍Next.js
📍Tailwind css
📍TypeScript
📍Git

Для JunovNet нужно быть знакомым с:
📍React
📍Tailwind css
📍TypeScript
📍Git

Будет плюсом или мы научим🧐
📍Flowbite
📍И многому другому😎

Отвечаем на вопросы, помогаем и подсказываем.
Поможем с резюме и подготовкой к собеседованию.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3
Продолжение к посту выше👆

Общекомандные миты проходят каждую пятницу в 18 по мск.
Миты команд проходят по согласованию участников.

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

Нужно иметь аккаунты в GitHub, GitLab и Trello.

Если есть желание принять участие, пишите в комментариях.

Пример составления комментария (заявки):
👉 Как зовут.
👉 Пару слов о себе.
👉 Опыт.
👉 Сколько времени готов уделять проекту (в день или неделю)
👉 Какими инструментами владею.
👉 Чему хочу научиться.
👉 Посещать миты могу.
👉 Аккаунты есть или создам.
python-dependency-injector - инструмент для управления и внедрения зависимостей (DI) в приложениях Python.
Предоставляет мощный и гибкий механизм для объявления и внедрения зависимостей, позволяя упростить создание и управление объектами, которые требуют внешних ресурсов или других зависимостей.

Основные особенности python-dependency-injector:

📍Контейнер: библиотека предоставляет механизм контейнера зависимостей, который позволяет объявлять, регистрировать зависимости и предоставлять их при запросе.

📍Инъекция: python-dependency-injector обеспечивает механизм внедрения зависимостей, который автоматически передает все необходимые зависимости в объекты при их создании.

📍Жизненный цикл: поддерживает управление жизненным циклом зависимостей, позволяя контролировать создание, инициализацию и уничтожение объектов.

📍Разделение на уровни: python-dependency-injector позволяет разделять зависимости на уровни, чтобы обеспечить четкое разделение ответственностей и улучшить модульность приложения.

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

📍Поддержка фреймворков: python-dependency-injector может интегрироваться с фреймворками, такими как Flask, Django, FastAPI и другие, для обеспечения прозрачной инъекции зависимостей в коде приложения.

📍Асинхронность: поддерживает асинхронное внедрение зависимостей (Asynchronous injections).

📍Типизация: предоставляет типы, дружественные mypy.

📍Производительность. Быстрота. Написано на Cython.

📍Зрелость. Можно использовать в продакшене. Хорошо протестирован, документирован и поддерживается.

Исходный код

🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS

#pythondependencyinjector #di #flask #django #fastapi
🔥10👍1
Django и полнотекстовый поиск #3

SearchRank

Вполне вероятно, что вы захотите упорядочить результаты по какому-то признаку релевантности. PostgreSQL предоставляет функцию ранжирования, которая учитывает, как часто термины запроса появляются в документе, как близко друг к другу они расположены в документе и насколько важна часть документа, в которой они встречаются. Чем лучше совпадение, тем выше значение ранга.

Для упорядочивания по релевантности:

from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector

vector = SearchVector('body_text')
query = SearchQuery('cheese')
Entry.objects.annotate(rank=SearchRank(vector, query)).order_by('-rank')

[<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]

Установите параметр cover_density в значение True, чтобы включить ранжирование по плотности покрытия, что означает, что учитывается близость совпадения терминов запроса.
Введите целое число в параметр normalization для управления нормализацией ранга. Это целое число является битовой маской, поэтому вы можете комбинировать несколько вариантов поведения:

from django.db.models import Value

Entry.objects.annotate(
... rank=SearchRank(
... vector,
... query,
... normalization=Value(2).bitor(Value(4)),
... )
... )


В документации PostgreSQL есть более подробная информация о different rank normalization options.


🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript и т.д.).
Обучаю с нуля, а так же провожу консультации для мидлов и синьоров.

Пишите - https://t.me/DJWOMS


#django #orm #searchrank
🔥13🥰1