Python

Kako uporabljati Django Channel

Kako uporabljati Django Channel
Django je priljubljeno ogrodje Python, ki se uporablja za razvoj spletnih aplikacij z uporabo WGSI (Vmesnik spletnega strežnika) in ASGI (Asynchronous Server Gateway Interface) specifikacije strežnika. WGSI se uporablja za razvoj sinhronih aplikacij Python, AGSI pa za razvoj asinhronih in sinhronih spletnih aplikacij. Kanal je uporabna lastnost Djanga, ki se uporablja za obdelavo WebSocket, protokola klepeta itd. poleg protokola HTTP. Kanal temelji na specifikacijah strežnika ASGI. Z uporabo lahko odprete dvosmerno interaktivno komunikacijsko sejo med uporabnikovim brskalnikom in strežnikom WebSocket. Naročnik sproži WebSocket in strežnik se odzove z sprejeti ali blizu sporočilo. The WebSocket sporočila potisnejo v kanal z uporabo proizvajalci in poslano na potrošnikov ki poslušajo na kanalu. Ta vadnica vam pokaže, kako uporabljati kanalov urediti WebSocket sporočila.

Pogoji

Pred vadbo skripta, prikazanega v tej vadnici, ne pozabite dokončati naslednjih nalog.

Nastavite aplikacijo Django

Zaženite naslednji ukaz, da ustvarite aplikacijo Django z imenom socketapp:

$ python3 upravljanje.py startapp socketapp

Za namestitev kanala zaženite naslednji ukaz:

Kanali za namestitev $ pip

Dodajte kanale in ime aplikacije v INSTALLED_APP del nastavitve.py mapa:

INSTALLED_APPS = [
..
'kanali',
'socketapp'
]

Določite vrednost ASGI_APPLICATION v nastavitve.py mapa:

ASGI_APPLICATION = 'channel_pro.asgi.prijava '

Ustvarite mapo z imenom predloge znotraj socketapp mapo in nastavite lokacijo predloge aplikacije v PREDLOGE del nastavitve.py mapa:

PREDLOGE = [

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

Naslednji izhod se bo pojavil v terminalu po zagonu strežnika Django. Rezultat kaže, da ASGI / Kanali različice 3.0.3 teče.

Ustvarite datoteko predloge z imenom indeks.html na določeni lokaciji predloge za prikaz podatkov, ki jih pošlje WebSocket. Objekt vtičnice, ustvarjen z uporabo JavaScripta, bo podatke prebral s pomočjo JSON-a.parse (), nato vrednost prenesemo v vsebino

oznaka, ki vsebuje vrednost ID, 'sporoč."

indeks.html





Vadnice za kanal Django




text




Spremenite pogledi.py datoteka socketapp z naslednjo vsebino. The indeks.html Datoteka predloge bo prikazana v brskalniku z besedilo spremenljivka, ko je indeks () metoda tega skripta se pokliče iz URL-ji.py mapa. Če se iz vtičnice ne prenese nobeno sporočilo, se prikaže besedilo 'LinuxHintbo prikazano v brskalniku.

pogledi.py

# Uvozi modul upodabljanja iz Djanga
iz djanga.bližnjice uvoz upodabljajo
# Ustvari funkcijo indeksa za prikaz datoteke HTML v brskalniku
indeks def (zahteva):
vrnitev upodabljanja (zahteva, "indeks.html ", context = 'text': 'LinuxHint')

Spremenite URL-ji.py datoteka socketapp z naslednjo vsebino. V skriptu sta opredeljeni dve poti:admin /'pot se uporablja za odpiranje nadzorne plošče za upravljanje Django in'sporočilo /'pot se uporablja za branje sporočila WebSocket.

URL-ji.py

iz djanga.prispevaj uvoz admin
iz djanga.pot za uvoz URL-jev
iz pogledov uvoza socketapp
urlpatterns = [
pot ('admin /', admin.spletnem mestu.urls),
pot ('msg /', pogledi.indeks)
]

Ko se naslednji URL izvede brez definiranja porabniških in usmerjevalnih datotek, bo deloval protokol HTTP in prikazal se bo naslednji izhod.

http: // localhost: 8000 / sporoč

Zdaj ustvarite potrošnikov.py v datoteki socketapp mapo z naslednjim skriptom. The povezati () metoda ws_consumer bo uporabljen za sprejem povezave vtičnice, vsako sekundo prebere trenutno vrednost časa in pošlje trenutni čas v obliki JSON prek WebSocket, ko je ta metoda poklicana iz usmerjevalne datoteke.

potrošnikov.py

# Uvozi modul JSON
uvoz json
# Uvozi WebsocketConsumer
iz kanalov.generično.uvoz uvoza WebsocketConsumer
# Uvozi modul datuma in časa
od datetime uvoz datumtime
# Uvozi modul spanja
od časa uvoza spanja
# Določite potrošniški razred za pošiljanje podatkov prek WebsocketConsumer
razred ws_consumer (WebsocketConsumer):
def connect (self):
sebe.sprejme ()
while (True):
zdaj = datum in čas.zdaj ()
sebe.pošlji (json.odlagališča ('timeValue': zdaj.strftime ("% H:% M:% S")))
spanje (1)

Ustvari usmerjanje.py znotraj socketapp mapo z naslednjim skriptom. "sporočilo /'pot je definirana v skriptu, da pokliče potrošnika za pošiljanje podatkov v vtičnico.

usmerjanje.py

iz djanga.pot za uvoz URL-jev
iz .potrošniki uvozijo ws_consumer
# Nastavite pot za klic potrošnika
ws_urlpatterns = [
pot ('msg /', ws_consumer.as_asgi ())
]

Spremenite asgi.py datoteko z naslednjim skriptom. Moduli, ki so potrebni za obdelavo zahtev HTTP in WebSocket, so uvoženi v skriptu.

asgi.py

# Uvozi os modul
uvoz os
# Uvozite get_asgi_application za obdelavo protokola http
iz djanga.jedro.asgi uvoz get_asgi_application
# Uvozite ProtocolTypeRouter in URLRouter, da nastavite usmerjanje spletne povezave
iz kanalov.usmerjanje uvoza ProtocolTypeRouter, URLRouter
# Uvozi AuthMiddlewareStack za obdelavo spletne povezave
iz kanalov.auth uvoz AuthMiddlewareStack
# Uvozi usmerjanje spletne povezave
iz socketapp.usmerjanje uvoza ws_urlpatterns
# Dodelite vrednost za DJANGO_SETTINGS_MODULE
os.okolju.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.nastavitve ')
# Določite aplikacijsko spremenljivko za obdelavo http in websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Zdaj znova zaženite naslednji URL iz brskalnika, da preberete podatke iz WebSocket.

http: // localhost: 8000 / msg /

Če potrošnik in usmerjevalnik delujeta pravilno, bo v brskalniku prikazana naslednja digitalna ura. Tu je usmerjevalnik poslal zahtevo WebSocket z uporabo 'sporočilo /'pot do potrošnika, ki je zahtevo sprejel in podatke poslal v predlogo za prikaz digitalne ure v brskalniku, kjer se druga vrednost trenutnega časa posodablja vsako sekundo.

Zaključek

Ta vadnica vam je pokazala, kako implementirati aplikacijo v realnem času z uporabo ogrodja in kanalov Django z ustvarjanjem preproste digitalne ure. Druge vrste aplikacij v realnem času je mogoče implementirati tudi z uporabo Djanga in kanalov, kot so sistemi za klepet v spletu. Skripti, uporabljeni v tej vadnici, delujejo samo za različice Django 3+ in različice Channel 3+. Torej, če uporabljate starejšo različico Django ali Channel, boste morali različico nadgraditi, preden preizkusite skript, predviden v tej vadnici.

Microsoft Sculpt Touch Wireless Mouse Review
Pred kratkim sem prebral o Microsoftov kiparski dotik brezžično miško in se odločil za nakup. Potem ko sem ga nekaj časa uporabljal, sem se odločil, d...
Zaslonska sledilna ploščica in kazalec miške AppyMouse za tablične računalnike Windows
Uporabniki tabličnih računalnikov pogosto zgrešijo miškin kazalec, še posebej kadar običajno uporabljajo prenosne računalnike. Pametni telefoni in tab...
Srednji gumb miške ne deluje v sistemu Windows 10
The srednji gumb miške vam pomaga, da se pomikate po dolgih spletnih straneh in zaslonih z veliko podatkov. Če se to ustavi, boste na koncu uporabili ...