The Precognition

Личный блог Николая Ситала

Django Simple Chat


Django Simple Chat Application

Проект доступен для скачивания на GitHub

Простой чат, создан с использованием:

  1. Django 4.0
  2. Django REST Framework 3.13.1
  3. Simple JWT 5.2.2
  4. Channel Layers 3.0.4
  5. sqlite3

изображение

Пользователь может создавать комнаты и добавлять участников, а также общаться один на один или в общем чате.

Installing and Running Python 3.10

Вы можете скачать установщик Python со страницы Download Python официального сайта. Я буду использовать версию 3.10.

После этого откройте PowerShell или CMD и перейдите в локальный каталог, в который вы хотите клонировать репозиторий

Клонируйте через HTTPS

git clone https://github.com/sharkevolution/debug.git

Перейдите в каталог debug, обновите pip менеджер пакетов

python -m pip install --upgrade pip

Cоздайте виртуальное окружение

%LocalAppData%\Programs\Python\Python310\python.exe -m venv %cd%\venv

Структура после создания

debug
  projects
  venv
  .gitignore
  README.md
  requirements.txt

Установите пакеты и зависимости

перейдите в каталог debug

cd debug

Установите пакеты

pip install -r requirements.txt

Выполните следующие команды, чтобы создать таблицы в базе данных sqlite3

Перейдите в каталог

cd projects\chat_api_13

создание миграций

python manage.py makemigrations

запуск миграций

python manage.py migrate

Создание суперпользователя

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

python manage.py createsuperuser

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

Запуск отладочного сервера

python manage.py runserver

Команда запустит приложение будет доступно на вашем локальном хосте http://127.0.0.1:8000/

Войдите в чат используя логин и пароль администратора или пройдите регистрацию для обычного пользователя

изображение

Страница создания комнат

изображение

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

изображение

Реализованные функции

  1. Частная переписка между 2 участниками, если в комнате только два участника все сообщения будут частными. Если в комнате 1 или более 2 участников все сообщения становяться общими и доставлены всем для прочтения. при необходимсти отправки частного сообщения, нажмите на имя пользователя в разделе "участники группы" сообщение с приставкой /pm будет доставлено только указанному пользователю.

  2. Новые и непрочитанные сообщения

  3. Уведомление о прочтении сообщения
  4. Отображение текущего статуса пользователя (активен/неактивен)
  5. Добавление и исключение пользователей из комнаты

Реализованный API

Authorization: Bearer simple JWT в заголовке

Метод URL-адрес Описание
POST http://127.0.0.1:8000/api/v1/token/ Создание токена simple jwt и добавление в таблицу
POST http://127.0.0.1:8000/api/v1/users/create/ Создание нового пользователя, key = [username, password]
GET http://127.0.0.1:8000/api/v1/rooms/ Список доступных комнат и их id
GET http://127.0.0.1:8000/api/v1/rooms/1/ Детальная информация о комнате по первичному ключу pk = "id комнаты"
GET http://127.0.0.1:8000/api/v1/roomcontent/1/ Детальная информация, список сообщений доступный пользователю, pk = "id комнаты"
GET http://127.0.0.1:8000/api/v1/users/ Список пользователей и информация в каких комнатах являются участниками
GET http://127.0.0.1:8000/api/v1/users/1/ Последнее сообщение пользователя для каждой комнаты, pk = "id пользователя"
GET http://127.0.0.1:8000/api/v1/users/unread/1/ Информация о непрочитанных сообщениях пользователя, pk = "id пользователя"
POST http://localhost:8000/api/v1/usersend/ Отправка сообщения пользователю, key = [recipient, room, content] указываем id клиента и id комнаты
POST http://127.0.0.1:8000/api/v1/roomcreate/ Создание комнаты с двумя участниками, key = [name, participante, participante] имя и id участников

Postman клиент для тестирования API

В проекте для возможности тестирования добавлен файл для импорта в Postman, версия Collection v2.1

Файл для импорта в корне проекта Simple_Chat_Django.postman_collection.json