/django-chat

Little tutorial on how to build a simple chat application with Django

Primary LanguagePython

Перший найпростіший чатік

Поставити Python на систему

Перед тим як почати з самим проектом поставимо Python3. Заходимо на https://www.python.org/downloads/, вибираємо останній пакет 3.X.X версії на свою систему і завантажуємо. Для зручності запуску на Windows рекомендую також поставити PowerShell, але це опціонально.

Запуск проекту

Завантажити проект можна на GitHub'і якщо натиснути на зелену кнопку "Clone or Download" і вибрати "Download ZIP".

Інсталювати django і додаткові пакети

Після інсталювання Python в нас мала появитися команда pip в командній строці (cmd.exe або Command Prompt в меню Пуск, або PowerShell). Щоб поставити пакети на систему відкриваємо папку розархівованого проекта і запускаємо команду:

pip3 install -r requirements.txt

Якщо не працює попробуй pip просто. Це поставить django на систему і пакет coolname для генерації цікавих імен користувачів (Caped Hippo і т.д.). Перевірити чи все правильно поставлено можна командою:

python3 -m django --version

Запуск проекту

В командній строці переходимо в папку mychat (cd mychat) і запускаєм проект командою:

python3 manage.py runserver

Ознайомлення із структурою проекту

Проект зроблений на базі інструкцій описаних в https://channels.readthedocs.io/en/latest/tutorial/index.html. Для початку цей туторіал напевно надто складний би був, то я трохи спростив роботу, але структура django проекта залишилася така ж, що й описується. Похожі кроки можна знайти і в офіційному туторіалі Django https://docs.djangoproject.com/en/3.0/intro/tutorial01/.

.
├── mychat
│   ├── manage.py
│   ├── chat
│   │   └── ...
│   └── mychat
│       └── ...
├── Makefile
├── README.md
└── requirements.txt
  • mychat/manage.py - Автоматично згенерований файл разом із mychat/mychat папкою. З його допомогою можна запускати сервер і виконувати різні адміністративні команди наподобі - створити базу даних, очистути кеш і тому подібне. Нам для початку знадобиться лише для запуску сервера.
  • mychat/chat - Тут буде основний код чата. Про нього кремо внизу.
  • mychat/ - це основний проект django, який ми згенерували командою django-admin startproject mychat. Він включає налаштування проекту і базові файли для запуску на сервері. Зазвичай рекомендують додавати свій код в підпроекти, тому тут ми будемо лише змінювати конфігурацію.
  • Makefile - якщо умієш користуватися make командою - тут зібрав деякі зручні команди. Наприклад запустити сервер можна просто через make run, або інсталювати пакети make setup. Я зазвичай так роблю, щоб команди не запамятовувати.
  • README.md - те що ти читаєш зараз )))
  • requirements.txt - залежності для проекта. Тут буде прописане django і ще пакети які ти хочеш поставити. Їх можна поставити і один за одним, але обєднавши в 1 файл легше не забувати поставити якусь бібліотеку.

Папка mychat/chat

Це основний код твого поекту. Я його підключив до основного коду у mychat/mychat прописавши його у settings.py i urls.py.

Структура:

mychat/chat
├── __init__.py
├── templates
│   └── chat
│       ├── index.html
│       └── room.html
├── urls.py
└── views.py
  • __init__.py - Це спеціальні файли, які вказують Python, що ця папка належить до проекту і її можна імпортувати як модуль. Краще залишати пустою, але тут також можна писати код.
  • templates/chat/ - Тут лежатимуть шаблони для HTML сторінок чата. Їх в коді можна використовувати виконаши функцію render, наприклад render(request, "chat/index.html") - це перетворить шаблон у строку і поверне як відповіть на HTTP запит.
  • templates/chat/index.html - основна сторінка проекту. Її видно якщо відкрити http://127.0.0.1:8000/chat/
  • templates/chat/room.html - сторінка кімнати чату. Тут JS код для відправлення і отримання повідомлень.
  • urls.py - тут код для реєстрації всіх сторінок на сайті. Дякуючи цьому файлу сервер знає, що коли запитують http://127.0.0.1:8000/chat/, треба викликати функцію index у файлі views.py. В свою чергу функція index уже звернеться до шаблона index.html.
  • views.py - Основний код Python знаходиться в цьому файлі. Тут є клас Room, який містить історію переписки для кімнати, код для основної сторінки і сторінки кімнати, а код для запитів із JS на отримання і відправлення повідомлень.