Python

Как да използвам Django Channel

Как да използвам Django Channel
Django е популярна рамка на Python, използвана за разработване на уеб приложения с помощта на WGSI (Интерфейс на шлюз за уеб сървър) и ASGI (Asynchronous Server Gateway Interface) спецификации на сървъра. WGSI се използва за разработване на синхронни приложения на Python, а AGSI се използва за разработване на асинхронни и синхронни уеб приложения. Канал е полезна функция на Django, която се използва за обработка на WebSocket, протокол за чат и т.н. заедно с HTTP протокола. Каналът е изграден на базата на спецификациите на ASGI сървъра. Двупосочна интерактивна сесия за комуникация между браузъра на потребителя и сървъра може да бъде отворена с помощта WebSocket. Клиентът инициира WebSocket връзка и сървърът отговаря с приемете или близо съобщение. The WebSocket съобщенията се избутват в канала с помощта производители и изпратени до потребителите които слушат по канала. Този урок ви показва как да използвате канали да се справя WebSocket съобщения.

Предпоставки

Преди да практикувате скрипта, показан в този урок, не забравяйте да изпълните следните задачи.

Настройте приложение Django

Изпълнете следната команда, за да създадете приложение на Django с име socketapp:

$ python3 управлява.py startapp socketapp

Изпълнете следната команда, за да инсталирате канала:

$ pip канали за инсталиране

Добавете каналите и името на приложението към INSTALLED_APP част от настройки.py файл:

INSTALLED_APPS = [
..
„канали“,
„socketapp“
]

Дефинирайте стойността на ASGI_APPLICATION в настройки.py файл:

ASGI_APPLICATION = 'channel_pro.asgi.приложение'

Създайте папка с име шаблони вътре в socketapp папка и задайте местоположението на шаблона на приложението в ШАБЛОНИ част от настройки.py файл:

ШАБЛОНИ = [

.. .
'DIRS': ['/ home / fahmida / channel_pro / socketapp / templates'],
.. .
,
]

Следният изход ще се появи в терминала след стартиране на Django сървъра. Резултатът показва, че ASGI / Канали версия 3.0.3 работи.

Създайте файл с шаблон с име индекс.html в дефинираното местоположение на шаблона за показване на данните, изпратени от WebSocket. Обектът на сокет, създаден с помощта на JavaScript, ще чете данните с помощта на JSON.parse () метод, след което предайте стойността в съдържанието на

таг, който съдържа стойността на ID, 'msg.'

индекс.html





Уроци по Django Channel




текст




Променете мнения.py файл на socketapp със следното съдържание. The индекс.html файлът на шаблона ще се покаже в браузъра с текст променлива, когато индекс () метод на този скрипт се извиква от URL адреси.py файл. Ако от гнездото не се предава съобщение, тогава текстът 'LinuxHintще се покаже в браузъра.

мнения.py

# Импортиране на модул за рендиране от Django
от django.преки пътища за импортиране
# Създайте функция за индекс за показване на HTML файла в браузъра
def index (заявка):
return render (заявка, "индекс.html ", context = 'text': 'LinuxHint')

Променете URL адреси.py файл на socketapp със следното съдържание. В скрипта са дефинирани два пътя:администратор /'пътят се използва за отваряне на таблото за управление на администрацията на Django и'съобщение /'path се използва за четене на съобщението WebSocket.

URL адреси.py

от django.принос вноса администратор
от django.път за импортиране на URL адреси
от изгледи за импортиране на socketapp
urlpatterns = [
път ('admin /', admin.сайт.URL адреси),
path ('msg /', изгледи.индекс)
]

Когато се изпълни следният URL, без да се дефинират потребителските и маршрутизиращите файлове, HTTP протоколът ще работи и ще се появи следният изход.

http: // localhost: 8000 / msg

Сега създайте a потребителите.py файл в socketapp папка със следния скрипт. The свързване () метод на ws_consumer ще се използва за приемане на връзката на сокета, четене на текущата стойност на времето всяка секунда и изпращане на текущото време във формат JSON чрез WebSocket, когато този метод бъде извикан от маршрутизиращия файл.

потребителите.py

# Импортиране на JSON модул
импортиране json
# Импортиране на WebsocketConsumer
от канали.родово.импортиране на Websocket
# Импортиране на модул за дата и час
от datetime импортиране datetime
# Импортиране на модул за заспиване
от време внос сън
# Определете потребителския клас за изпращане на данните чрез WebsocketConsumer
клас ws_consumer (WebsocketConsumer):
def свързване (самостоятелно):
себе си.приемете ()
while (Вярно):
сега = дата и час.сега()
себе си.изпрати (json.сметища ('timeValue': сега.strftime ("% H:% M:% S")))
сън (1)

Създайте маршрутизиране.py вътре в socketapp папка със следния скрипт. "съобщение /'пътят е дефиниран в скрипта за извикване на потребителя за изпращане на данните в сокета.

маршрутизиране.py

от django.път за импортиране на URL адреси
от .потребителите внасят ws_consumer
# Задайте пътя за извикване на потребителя
ws_urlpatterns = [
path ('msg /', ws_consumer.as_asgi ())
]

Променете asgi.py файл със следния скрипт. Модулите, които са необходими за обработка на HTTP и WebSocket заявки, се импортират в скрипта.

asgi.py

# Импортиране на модул os
внос os
# Импортирайте get_asgi_application за обработка на http протокол
от django.ядро.asgi импортиране get_asgi_application
# Импортирайте ProtocolTypeRouter и URLRouter, за да зададете маршрутизацията на уебсайта
от канали.маршрутизиране импортиране ProtocolTypeRouter, URLRouter
# Импортирайте AuthMiddlewareStack за обработка на уебсайтове
от канали.auth импортиране AuthMiddlewareStack
# Импортиране на маршрутизиране на уебсайтове
от socketapp.маршрутизиране внос ws_urlpatterns
# Присвояване на стойност за DJANGO_SETTINGS_MODULE
операционна система.среда.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.настройки')
# Определете променливата на приложението за обработка на http и websocket
application = ProtocolTypeRouter (
„http“: get_asgi_application (),
„websocket“: AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Сега отново стартирайте следния URL от браузъра, за да прочетете данните от WebSocket.

http: // localhost: 8000 / msg /

Ако потребителят и рутерът работят правилно, следният цифров часовник ще се покаже в браузъра. Тук рутерът е изпратил заявката WebSocket, използвайки 'съобщение /'път до потребителя, който е приел заявката и е изпратил данните към шаблона, за да покаже цифровия часовник в браузъра, където втората стойност на текущото време се актуализира всяка секунда.

Заключение

Този урок ви показа как да внедрите приложение в реално време, използвайки рамката и каналите на Django, като създадете прост цифров часовник. Други видове приложения в реално време също могат да бъдат внедрени с помощта на Django и канали, като системи за онлайн чат. Скриптовете, използвани в този урок, работят само за версии на Django 3+ и Channel версии 3+. Така че, ако използвате по-ранна версия на Django или Channel, ще трябва да надстроите версията, преди да тествате скрипта, предоставен в този урок.

Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...
Екранен тракпад и указател на мишката на AppyMouse за таблети с Windows
Потребителите на таблети често пропускат показалеца на мишката, особено когато са привични да използват лаптопите. Смартфоните и таблетите със сензоре...