Как сделать чат на Python Django

Чат на Django
Метки: / / / /

В этой статье мы разберём как сделать чат на Python Django, тут будет только самое базовое, что нужно знать про это.

Примечание:

Также крайне рекомендуется перед прочтением, прочитать статью «Django библиотека channels для WebSocket», так как в этой мы не будем показывать настройку и основы работы с библиотекой channels а её мы и будем использовать для реализации WebSocket на Django.

Настройка проекта:

Первым делом нужно всё настроить, для этого нужно создать виртуальное окружение, тут можете посмотреть статью про это «Создание Virtual Environments Python».

После того как сделали виртуальное окружение и создали проект на Django, можете скачать саму библиотеку channels и ещё один не большой компонент, для того чтобы она могла работать Redis.

В Redis будет временно сохранятся наши сообщения, для этого она и нужна.

Примечание:

Redis –  БД типа NoSQL, которая хранит данные в ОЗУ, доступ к которым осуществляется по ключу если хотите узнать подробнее, то зайдите по ссылки.

Теперь не много изменим файл settings.py, добавим не большой список.

Тут мы настроили работу с Redis, остальные настройки в дрогой статье, конкретно про библиотеку.

Создание проекта:

Теперь перейдём к созданию проекта, тут первым делом во файле «models.py», создадим модель для сообщений, примерно так:

Тут не чего такое нет, модель имеет только идентификатор сообщения и текст, дальше нужно сделать миграции, используете эти команды:

Дальше создадим файл «routing.py», это аналог «urls.py», только для WebSocket.

Здесь мы назначаем только один путь, где будут обрабатывается все WS запросы, следующие что нужно сделать, это создать файл «consumers.py» и в нём делаем класс ChatConsumer, он будет обрабатывать все WS запросы.

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

Внутри класса первым делом идёт метод который отслеживает подключения пользователя в комнату, то есть, если он будет писать туда сообщения, то его получат все кто находится в этой комнате, можете заметить, что я просто назначаю номер комнаты один, это сделано для того, чтобы все сидели в одном чате, а так вы можете в URL передавать номер комнаты и назначать пользователя туда, когда он подключается.

Потом пишем метод disconnect(), он срабатывает когда клиент отключается от WebSocket, создаём функцию с декоратором @database_sync_to_async, он позволяет работать с БД асинхронная, это нужно, потому что Django по умолчанию работает синхронна, если этого не сделать, то будет ошибка, создаём метод для сохранения сообщения в БД.

Дальше пишем метод для принятии сообщений от клиента, и так как мы получаем JSON массив, мы превращаем его в обычный Python список, получаем сообщение, используем метод new_message() и отправляем данные методу для отправки клиентам сообщений, в методе chat_message(), отправляем сообщение всем подключённым клиентам.

На этом код для WebSockrt на сервере закончился, теперь создадим JavaScript скрипт для работы с этим.

Этот скрипт очень простой и короткий, поэтому я его не буду объяснять, да и в целом это статья про Python django, вы уже должны хорошо знать JS.

Теперь надо создать HTML шаблон, сделаем это в папке «templates», в главном приложение, где вся логика, назовём файл «room.html».

Добавим рендаринг этой страницы и прописать URL до неё.

Добавляем URL:

На этом всё закончилось, всё должно работать отлично.

Вывод:

В этой статье вы прочитали как сделать чат на Python Django с использованием библиотеки channels для WebSocket, если вас она заинтересовала, то почитайте официальную документацию.

Подписываетесь на соц-сети:

Оценка:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
(Пока оценок нет)
Загрузка...

Поделится:

Также рекомендую: