Krajta

Jak používat Django Channel

Jak používat Django Channel
Django je populární framework Pythonu používaný k vývoji webových aplikací pomocí WGSI (Rozhraní brány webového serveru) a ASGI (Asynchronous Server Gateway Interface) specifikace serveru. WGSI se používá pro vývoj synchronních aplikací v Pythonu a AGSI se používá pro vývoj asynchronních a synchronních webových aplikací. Kanál je užitečná funkce Django, která se používá pro zpracování WebSocket, chatovacího protokolu atd. vedle protokolu HTTP. Kanál je postaven na specifikacích serveru ASGI. Obousměrnou interaktivní komunikační relaci mezi prohlížečem uživatele a serverem lze otevřít pomocí WebSocket. Klient iniciuje WebSocket připojení a server odpoví akceptovat nebo zavřít zpráva. The WebSocket zprávy jsou odesílány do kanálu pomocí výrobci a poslal do spotřebitelé kteří poslouchají na kanálu. Tento výukový program vám ukáže, jak používat kanály zvládnout WebSocket zprávy.

Předpoklady

Před procvičením skriptu zobrazeného v tomto kurzu nezapomeňte dokončit následující úkoly.

Nastavit aplikaci Django

Spuštěním následujícího příkazu vytvořte aplikaci Django s názvem socketapp:

$ python3 spravovat.py startapp socketapp

Spusťte následující příkaz k instalaci kanálu:

$ pip instalační kanály

Přidejte kanály a název aplikace do INSTALLED_APP část nastavení.py soubor:

INSTALLED_APPS = [

'kanály',
'socketapp'
]

Definujte hodnotu ASGI_APPLICATION v nastavení.py soubor:

ASGI_APPLICATION = 'channel_pro.asgi.aplikace'

Vytvořte složku s názvem šablony uvnitř socketapp složku a nastavte umístění šablony aplikace v ŠABLONY část nastavení.py soubor:

TEMPLATES = [

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

Po spuštění serveru Django se v terminálu zobrazí následující výstup. Výstup ukazuje, že ASGI / kanály verze 3.0.3 běží.

Vytvořte soubor šablony s názvem index.html v definovaném umístění šablony pro zobrazení dat odeslaných WebSocket. Objekt socket, který je vytvořen pomocí JavaScriptu, načte data pomocí JSON.parse (), poté předejte hodnotu do obsahu souboru

tag, který obsahuje hodnotu ID, 'msg.''

index.html





Výukové programy pro kanál Django




text




Upravte pohledy.py soubor socketapp s následujícím obsahem. The index.html soubor šablony se zobrazí v prohlížeči s text proměnná, když index() metoda tohoto skriptu se volá z adresy URL.py soubor. Pokud se ze zásuvky nepřenáší žádná zpráva, zobrazí se text „LinuxTip'se zobrazí v prohlížeči.

pohledy.py

# Import modulu vykreslení z Djanga
od djanga.zástupce importovat vykreslení
# Vytvořit indexovou funkci pro zobrazení souboru HTML v prohlížeči
def index (požadavek):
vrátit vykreslení (požadavek, "index.html ", context = 'text': 'LinuxHint')

Upravte adresy URL.py soubor socketapp s následujícím obsahem. Ve skriptu jsou definovány dvě cesty: 'admin /'cesta se používá k otevření Django Administration Dashboard a'zpráva /'cesta se používá ke čtení zprávy WebSocket.

adresy URL.py

od djanga.contrib import admin
od djanga.cesta pro import adres URL
ze zobrazení importu socketapp
urlpatterns = [
cesta ('admin /', admin.stránky.adresy URL),
path ('msg /', views.index)
]

Když je spuštěna následující adresa URL bez definování souborů spotřebitele a směrování, protokol HTTP bude fungovat a zobrazí se následující výstup.

http: // localhost: 8000 / msg

Nyní vytvořte spotřebitelé.py soubor uvnitř socketapp složka s následujícím skriptem. The připojit() metoda ws_consumer bude použito k přijetí připojení soketu, čtení aktuální hodnoty času každou sekundu a odeslání aktuálního času ve formátu JSON přes WebSocket, když je tato metoda volána ze směrovacího souboru.

spotřebitelé.py

# Importujte modul JSON
importovat JSON
# Importovat WebsocketConsumer
z kanálů.obecný.import websocket WebsocketConsumer
# Importovat modul datetime
z datetime import datetime
# Import spánkového modulu
od času importu spánku
# Definujte třídu spotřebitele pro odesílání dat prostřednictvím WebsocketConsumer
třída ws_consumer (WebsocketConsumer):
def connect (self):
já.akceptovat()
while (True):
nyní = datetime.Nyní()
já.odeslat (json.skládky ('timeValue': nyní.strftime ("% H:% M:% S")))
spánek (1)

Vytvořte směrování.py uvnitř socketapp složka s následujícím skriptem. 'zpráva /„ve skriptu je definována cesta k volání spotřebitele pro odeslání dat do soketu.

směrování.py

od djanga.cesta pro import adres URL
z .spotřebitelé importují ws_consumer
# Nastavte cestu, jak zavolat spotřebiteli
ws_urlpatterns = [
cesta ('msg /', ws_consumer.as_asgi ())
]

Upravte asgi.py soubor s následujícím skriptem. Moduly, které jsou vyžadovány ke zpracování požadavků HTTP a WebSocket, se importují ve skriptu.

asgi.py

# Import os modulu
import os
# Import get_asgi_application pro zpracování protokolu HTTP
od djanga.jádro.asgi import get_asgi_application
# Import ProtocolTypeRouter a URLRouter pro nastavení směrování webové zásuvky
z kanálů.směrování importu ProtocolTypeRouter, URLRouter
# Importujte AuthMiddlewareStack pro zpracování webové zásuvky
z kanálů.auth import AuthMiddlewareStack
# Importovat směrování websocket
z socketapp.směrování importu ws_urlpatterns
# Přiřaďte hodnotu pro DJANGO_SETTINGS_MODULE
os.prostředí.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.nastavení ')
# Definujte proměnnou aplikace pro zpracování http a websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Nyní znovu spusťte následující adresu URL z prohlížeče a přečtěte si data z WebSocket.

http: // localhost: 8000 / msg /

Pokud spotřebitel a směrovač fungují správně, zobrazí se v prohlížeči následující digitální hodiny. Zde router odeslal požadavek WebSocket pomocí 'zpráva /„cesta ke spotřebiteli, který přijal požadavek a odeslal data do šablony, aby ukázal digitální hodiny v prohlížeči, kde se každou sekundu aktualizuje druhá hodnota aktuálního času.

Závěr

Tento kurz vám ukázal, jak implementovat aplikaci v reálném čase pomocí rámce a kanálů Django vytvořením jednoduchých digitálních hodin. Pomocí Djanga a kanálů lze implementovat i jiné typy aplikací v reálném čase, například online chatovací systémy. Skripty použité v tomto kurzu fungují pouze pro verze Django verze 3+ a verze kanálu 3+. Pokud tedy používáte dřívější verzi Django nebo Channel, budete muset před testováním skriptu uvedeného v tomto kurzu upgradovat verzi.

Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...
Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...
Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...