Каналы Django – добавьте поддержку веб-сокета в ваш проект Django (4 части серии)
В моей последней статье я говорил о WebSockets и о том, как мы можем установить подключение веб-сокета с сторон/JavaScript. Сегодня мы начнем наше путешествие, чтобы написать простое приложение для чата, которое будет действительно полезно для демонстрации работы веб-сокетов и как мы можем создать приложения Django в реальном времени.
Как мы уже знаем, в типичном проекте Django клиент делает HTTP-запрос, Django вызывает представление, которое отвечает за управление этим запросом и возвращает ответ на клиента.
Это сообщение довольно стандартное. Но с тех пор, как Django представил ASGI и начал его вспомогательно, мы можем написать приложения Django с асинхронным кодом в дополнение к синхронному коду. Каналы Django Что на нас работают с веб-сокетами, также построено на ASGI.
Прежде чем получить дальше, давайте поговорим о Asgi и его предшественника WSGI.
WSGI – WSGI – это интерфейс Gateway веб-сервера. Это спецификация, которая описывает, как веб-сервер связывается с веб-приложениями, и как веб-приложения могут быть прикреплены вместе, чтобы обработать один запрос. Это похоже на посредник для проведения взаимодействия между веб-сервером и приложением Python.
Asgi – ASGI (интерфейс Asynchronous Server Gateway) является духовным преемником WSGI, предназначенным для обеспечения стандартного интерфейса между веб-серверами Async Python, Framewores и приложениями.
Итак, разница состоит в том, что WSGI предоставляет стандарт для работы синхронных приложений, в то время как ASGI давайте выполним асинхронные приложения, позволяющие нам работать с более современными протоколами, такими как веб-сокеты, где он может отправлять и получать несколько данных в одном соединении.
Если ASGI включен в нашем приложении, Django будет писать асинхронные представления и управлять Async Enabled запросы. Но писать Async-приложения, которые работают с WebSockets, нам нужно использовать каналы Django.
Если вы еще этого не сделаете, проверьте мою последнюю статью на WebSockets, прежде чем продолжить.
Каналы Django
Каналы Django выходят за пределы HTTP и поддерживают другие протоколы, такие как веб-розетки и построены на ASGI.
Основные реализации, которые мы собираемся увидеть в каналах, в значительной степени похожи на регулярные представления о HTTP, которые мы привыкли работать с. Для обработки подключения Websocket, каналы имеют Routing.py и Потребители.пи Отказ
- Routing.py это как Urls.py.
- Потребители.пи это как
Когда вступит в запрос или новый сокет, каналы будут следовать своей таблице маршрутизации, затем найдите правильный потребитель для этого входящего соединения и запускайте его копию. Больше на это позже.
Настроить и установка
1) Настройте виртуальную среду 2) Установите Django, затем создайте проект
pip install django django-admin startproject config .
3) Установка каналов
pip install channels
4) Добавьте каналы в список установленных приложений в настройках.
settings.py
INSTALLED_APPS = [ # ... 'channels', ]
5) Перейти к вашему проекту Asgi.py Файл и отрегулируйте его следующим образом, чтобы обернуть приложение Django ASGI:
asgi.py
import os import django from channels.http import AsgiHandler from channels.routing import ProtocolTypeRouter os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') django.setup() application = ProtocolTypeRouter({ "http": AsgiHandler(), # We will add WebSocket protocol later, but for now it's just HTTP. })
6) И, наконец, установите настройку Asgi_Application, чтобы указать на этот объект маршрутизации в качестве корневого приложения:
settings.py
ASGI_APPLICATION = "config.asgi.application"
Идеально! Теперь каналы взяли на команду Runserver, а сервер разработки ASGI/каналов будет запущен с этого момента.
Проверьте это, запустив сервер разработки Python Manage.py Runserver
И вы увидите следующее:
Начиная
Лучший способ начать работу с каналами и ASGI – создание простого приложения чата. Следовательно, после того, как вы закончите с помощью базовой настройки и установки, продолжайте и создайте приложение Django.
python manage.py startapp chat
Добавьте его в список установленных приложений в настройках.
settings.py
INSTALLED_APPS = [ # ... 'chat', ]
Хорошо, для этого простого приложения чата у нас будет 2 просмотра.
- Первый взгляд, который мы собираемся создавать, это индекс Посмотреть. Это то, что позволяет пользователям вводить комнату чата, которую они хотят присоединиться.
- Второй взгляд – комната View, который позволяет пользователям в том же соединении, чтобы увидеть сообщения, размещенные в этом чате.
В этом руководстве мы создадим первый взгляд, который является индекс Посмотреть.
Это сказано, давайте отправимся в наше приложение в чате и создайте каталог шаблонов. В каталоге шаблонов создайте другой каталог с именем чат И внутри этого создать файл с именем index.html Отказ
Поместите следующий код внутри index.html файл.
index.html.
Chat Room What chat room would you like to enter?
- Сценарий в вышеуказанном HTML-файле довольно просто. Это будет слушать события i.e. Когда пользователь нажимает ввод или кнопку отправки после набора в чате, он/она будет перенаправлена в виду номер http://127.0.0.1:8000/chat/omename/ .
Теперь давайте создадим представление, связанное с вышеуказанным шаблоном.
views.py
from django.shortcuts import render def index(request): return render(request, 'chat/index.html')
Сейчас Создать URLS.PY Модуль внутри приложения чата и карта индекс
Вид на узоры URL.
Чат/URLS.PY.
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
- Перейти к проекту URLS.PY Файл и включите URL-адрес приложения чата.
config/urls.py.
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('chat/', include('chat.urls')), ]
Время проверить Если это работает
python manage.py runserver
Перейти к http://127.0.0.1:8000/chat/ В вашем браузере и Voila у вас есть индексная страница. Введите комнату чата, и вы будете перенаправлены в представление о номере, которые мы еще не создали Так что это отобразит страницу «не найден» страницы.
Ссылка – https://channels.readthedocs.io/en/stable/
Это это на сегодня. В предстоящем уроке мы создадим вид на номер и начните писать потребителей.
Каналы Django – добавьте поддержку веб-сокета в ваш проект Django (4 части серии)
Оригинал: “https://dev.to/earthcomfy/getting-started-with-django-channels-a-simple-chat-app-2a7m”