Рубрики
Без рубрики

Начало работы с Django Channels – простое приложение чата Часть 1.

В моей последней статье я говорил о WebSockets и как мы можем создать подключение веб-сокета от … Теги с Python, Django, WebDev, начинающими.

Каналы 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”