Python

Ako používať Django Channel

Ako používať Django Channel
Django je populárny rámec Pythonu používaný na vývoj webových aplikácií pomocou WGSI (Rozhranie brány webového servera) a ASGI (Asynchronous Server Gateway Interface) špecifikácie servera. WGSI sa používa na vývoj synchrónnych aplikácií v Pythone a AGSI sa používa na vývoj asynchrónnych a synchrónnych webových aplikácií. Kanál je užitočná vlastnosť Django, ktorá sa používa na prácu s WebSocket, chatovacím protokolom atď. popri protokole HTTP. Kanál je postavený na špecifikáciách servera ASGI. Obojsmernú interaktívnu komunikačnú reláciu medzi prehliadačom používateľa a serverom je možné otvoriť pomocou programu WebSocket. Klient iniciuje WebSocket spojenie a server odpovie súhlasiť alebo Zavrieť správa. The WebSocket správy sa do kanálu odosielajú pomocou výrobcov a poslal do spotrebiteľov ktoré počúvajú na kanáli. Tento návod vám ukáže, ako používať kanály narábať s WebSocket správ.

Predpoklady

Pred precvičením skriptu zobrazeného v tomto návode si nezabudnite splniť nasledujúce úlohy.

Nastaviť aplikáciu Django

Spustením nasledujúceho príkazu vytvorte aplikáciu Django s názvom socketapp:

$ python3 spravovať.py startapp socketapp

Spustite nasledujúci príkaz na inštaláciu kanála:

$ pip inštalačné kanály

Pridajte kanály a názov aplikácie do priečinka INSTALLED_APP časť nastavenie.py spis:

INSTALLED_APPS = [

„kanály“,
'socketapp'
]

Definujte hodnotu ASGI_APPLICATION v nastavenie.py spis:

ASGI_APPLICATION = 'channel_pro.asgi.žiadosť '

Vytvorte priečinok s názvom šablóny vnútri socketapp priečinok a nastavte umiestnenie šablóny aplikácie v priečinku ŠABLÓNY časť nastavenie.py spis:

TEMPLATES = [

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

Po spustení servera Django sa v termináli objaví nasledujúci výstup. Výstup ukazuje, že ASGI / kanály verzie 3.0.3 beží.

Vytvorte súbor šablóny s názvom index.html v definovanom umiestnení šablóny na zobrazenie údajov odoslaných WebSocketom. Objekt socket, ktorý je vytvorený pomocou JavaScriptu, načíta údaje pomocou JSON.metódou parse (), potom odovzdajte hodnotu do obsahu súboru

značka, ktorá obsahuje hodnotu ID, msg.„

index.html





Výukové programy pre kanál Django




text




Upravte názory.py súbor socketapp s nasledujúcim obsahom. The index.html súbor šablóny sa zobrazí v prehľadávači s text premenná, keď index () metóda tohto skriptu sa volá z adresy URL.py spis. Ak sa zo soketu neprenáša žiadna správa, zobrazí sa text „LinuxHintsa zobrazí v prehliadači.

názory.py

# Import modulu vykreslenia z Djanga
od djanga.skratky importovať vykreslenie
# Vytvorte funkciu indexu na zobrazenie súboru HTML v prehliadači
def index (požiadavka):
návratové vykreslenie (požiadavka, "index.html ", context = 'text': 'LinuxHint')

Upravte adresy URL.py súbor socketapp s nasledujúcim obsahom. V skripte sú definované dve cesty: znak „admin /„cesta sa používa na otvorenie Django Administration Dashboard a“správa /cesta sa používa na čítanie správy WebSocket.

adresy URL.py

od djanga.sk prispieť import
od djanga.cesta importu adries URL
zo zobrazení importu socketapp
urlpatterns = [
cesta ('admin /', admin.stránky.adresy URL),
cesta ('msg /', zobrazenia.index)
]

Keď sa vykoná nasledujúca adresa URL bez definovania súborov spotrebiteľa a smerovania, protokol HTTP bude fungovať a zobrazí sa nasledujúci výstup.

http: // localhost: 8000 / správa

Teraz vytvorte spotrebiteľov.py súbor vo vnútri socketapp priečinok s nasledujúcim skriptom. The pripojiť () metóda ws_consumer použije sa na akceptovanie soketového pripojenia, na čítanie aktuálnej hodnoty času každú sekundu a na odoslanie aktuálneho času vo formáte JSON cez WebSocket, keď je táto metóda volaná zo smerovacieho súboru.

spotrebiteľov.py

# Importovať modul JSON
import json
# Import WebsocketConsumer
z kanálov.druhové.import websocket
# Importovať modul datetime
od
# Importovať modul spánku
od času import spánku
# Definujte triedu spotrebiteľa na odosielanie údajov prostredníctvom WebsocketConsumer
trieda ws_consumer (WebsocketConsumer):
def connect (self):
ja.súhlasiť()
while (True):
teraz = dátum a čas.teraz ()
ja.poslať (json.skládky ('timeValue': teraz.strftime ("% H:% M:% S")))
spánok (1)

Vytvorte smerovanie.py vnútri socketapp priečinok s nasledujúcim skriptom. „správa /„cesta je definovaná v skripte na volanie spotrebiteľa na odoslanie údajov do soketu.

smerovanie.py

od djanga.cesta importu adries URL
od .spotrebitelia importuju ws_consumer
# Nastavte cestu, ako zavolať spotrebiteľovi
ws_urlpatterns = [
cesta ('msg /', ws_consumer.as_asgi ())
]

Upravte asgi.py súbor s nasledujúcim skriptom. Moduly, ktoré sú potrebné na spracovanie požiadaviek HTTP a WebSocket, sa importujú do skriptu.

asgi.py

# Import os modulu
import os
# Import get_asgi_application na spracovanie protokolu HTTP
od djanga.jadro.asgi import get_asgi_application
# Import ProtocolTypeRouter a URLRouter na nastavenie smerovania websocket
z kanálov.smerovanie import ProtocolTypeRouter, URLRouter
# Importujte AuthMiddlewareStack na spracovanie websocket
z kanálov.auth import AuthMiddlewareStack
# Import smerovania websocket
z socketapp.smerovanie import ws_urlpatterns
# Priradiť hodnotu pre DJANGO_SETTINGS_MODULE
os.environment.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.nastavenie')
# Definujte premennú aplikácie na spracovanie protokolu http a websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
„websocket“: AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Teraz z prehliadača znova spustite nasledujúcu adresu URL, aby ste mohli načítať údaje z WebSocket.

http: // localhost: 8000 / správa /

Ak spotrebiteľ a smerovač pracujú správne, v prehliadači sa zobrazia nasledujúce digitálne hodiny. Tu smerovač odoslal požiadavku WebSocket pomocou znaku „správa /„cesta k spotrebiteľovi, ktorý prijal žiadosť a poslal údaje do šablóny, aby v prehliadači ukázal digitálne hodiny, kde sa druhá hodnota aktuálneho času aktualizuje každú sekundu.

Záver

Tento výukový program vám ukázal, ako implementovať aplikáciu v reálnom čase pomocou rámca a kanálov Django vytvorením jednoduchých digitálnych hodín. Iné typy aplikácií v reálnom čase je možné implementovať aj pomocou Django a kanálov, ako sú napríklad online chatovacie systémy. Skripty použité v tomto výučbe fungujú iba pre verzie Django verzie 3+ a verzie kanála 3+. Ak teda používate staršiu verziu Django alebo Channel, budete musieť verziu pred testovaním skriptu uvedeného v tomto návode inovovať.

Hry Ako zachytiť a streamovať vašu hernú reláciu v systéme Linux
Ako zachytiť a streamovať vašu hernú reláciu v systéme Linux
V minulosti sa hranie hier považovalo iba za hobby, ale časom došlo v hernom priemysle k obrovskému nárastu z hľadiska technológie i počtu hráčov. Her...
Hry Najlepšie hry na hranie s ručným sledovaním
Najlepšie hry na hranie s ručným sledovaním
Oculus Quest nedávno predstavil skvelú myšlienku ručného sledovania bez ovládačov. Vďaka stále sa zvyšujúcemu počtu hier a aktivít, ktoré vykonávajú p...
Hry Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Hranie hier na celú obrazovku alebo používanie aplikácií v režime rozptýlenia zadarmo na celú obrazovku vás môže odrezať od relevantných systémových i...