Piton

Hogyan kell használni a Django csatornát

Hogyan kell használni a Django csatornát
A Django egy népszerű Python keretrendszer, amelyet webalkalmazások fejlesztésére használnak a WGSI (Web Server Gateway Interface) és ASGI (Asynchronous Server Gateway Interface) kiszolgáló specifikációi. A WGSI-t szinkron Python-alkalmazások, az AGSI-t pedig aszinkron és szinkron web-alkalmazások fejlesztésére használják. Csatorna a Django hasznos szolgáltatása, amelyet a WebSocket, a csevegési protokoll stb. kezelésére használnak. a HTTP protokoll mellett. A csatorna az ASGI szerver specifikációira épül. Kétirányú interaktív kommunikációs munkamenet nyitható meg a felhasználó böngészője és a szerver között egy WebSocket. Az ügyfél kezdeményezi a WebSocket kapcsolatot, és a szerver egy elfogad vagy Bezárás üzenet. A WebSocket az üzeneteket a csatornával toljuk a segítségével termelők és elküldte a fogyasztók amelyek a csatornán hallgatnak. Ez az oktatóanyag bemutatja, hogyan kell használni csatornák kezelni WebSocket üzenetek.

Előfeltételek

Az ebben az oktatóanyagban látható szkript gyakorlása előtt feltétlenül hajtsa végre az alábbi feladatokat.

Állítson be egy Django alkalmazást

Futtassa a következő parancsot egy Django alkalmazás létrehozásához socketapp:

$ python3 kezelni.py startapp socketapp

A csatorna telepítéséhez futtassa a következő parancsot:

$ pip telepítési csatornák

Adja hozzá a csatornákat és az alkalmazás nevét a INSTALLED_APP része a beállítások.py fájl:

INSTALLED_APPS = [

„csatornák”,
'socketapp'
]

Határozza meg az ASGI_APPLICATION értékét a beállítások.py fájl:

ASGI_APPLICATION = 'csatorna_pro.asgi.Alkalmazás'

Hozzon létre egy nevű mappát sablonok benne socketapp mappába, és állítsa be az alkalmazás sablonjának helyét a Sablonok része a beállítások.py fájl:

Sablonok = [

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

A következő kimenet jelenik meg a terminálban a Django szerver futtatása után. A kimenet azt mutatja, hogy az ASGI / Channels 3. verziója.0.3 fut.

Hozzon létre egy sablonfájlt index.html a megadott sablonhelyen a WebSocket által küldött adatok megjelenítéséhez. A JavaScript használatával létrehozott socket objektum beolvassa az adatokat a JSON használatával.parse () metódus, majd adja át az értéket a

címke, amely az ID értéket tartalmazza, 'msg."

index.html





Django Channel oktatóanyagok




text




Módosítsa a nézetek.py fájlja socketapp a következő tartalommal. A index.html sablonfájl a böngészőben a szöveg változó, amikor a index() ennek a szkriptnek a metódusát a URL-ek.py fájl. Ha nem küld üzenetet a foglalatból, akkor a 'LinuxHint'jelenik meg a böngészőben.

nézetek.py

# Rendermodul importálása a Django-ból
djangótól.parancsikonok import render
# Hozzon létre index funkciót a HTML fájl megjelenítéséhez a böngészőben
def index (kérés):
return render (kérés, "index.html ", context = 'text': 'LinuxHint')

Módosítsa a URL-ek.py fájlja socketapp a következő tartalommal. Két utat határoz meg a szkript: a 'admin /'az elérési út a Django Administration Dashboard megnyitására szolgál, ésmsg /'elérési út a WebSocket üzenet olvasására szolgál.

URL-ek.py

djangótól.közreműködés import admin
djangótól.URL importálási útvonal
socketapp import nézetekből
urlpatterns = [
elérési út ('admin /', admin.webhely.URL-ek),
elérési út ('msg /', nézetek.index)
]

Amikor a következő URL a fogyasztói és útválasztási fájlok meghatározása nélkül kerül végrehajtásra, a HTTP protokoll működik, és a következő kimenet jelenik meg.

http: // localhost: 8000 / msg

Most hozzon létre egy fogyasztók.py fájl a socketapp mappát a következő szkript segítségével. A connect () a metódusa ws_fogyasztó a socket kapcsolat elfogadására, másodpercenként az aktuális időérték beolvasására és az aktuális idő JSON formátumban történő elküldésére szolgál a WebSocketen keresztül, amikor ezt a módszert az útválasztási fájlból hívják meg.

fogyasztók.py

# JSON modul importálása
import json
# WebsocketConsumer importálása
csatornákról.generikus.websocket importálás WebsocketConsumer
# Dátumidő modul importálása
a datetime importálásból datetime
# Alvó modul importálása
az időből importál
# Határozza meg a fogyasztói osztályt az adatok WebsocketConsumeren keresztül történő küldéséhez
osztály ws_consumer (WebsocketConsumer):
def connect (én):
maga.elfogad()
míg (Igaz):
most = dátumidő.Most()
maga.küld (json.dumps ('timeValue': most.strftime ("% H:% M:% S")))
alvás (1)

Hozza létre a útvonalválasztás.py benne socketapp mappát a következő szkript segítségével. A 'msg /'' a szkriptben az elérési út van meghatározva, hogy felhívja a fogyasztót az adatok elküldésére a socketbe.

útvonalválasztás.py

djangótól.URL importálási útvonal
tól től .a fogyasztók importálják a ws_fogyasztót
# Állítsa be a hívás útját a fogyasztó számára
ws_urlpatterns = [
elérési út ('msg /', ws_fogyasztó.as_asgi ()
]

Módosítsa a asgi.py a következő szkriptet tartalmazó fájl. A HTTP és WebSocket kérések kezeléséhez szükséges modulokat a szkript importálja.

asgi.py

# OS modul importálása
import os
# A get_asgi_application importálása a http protokoll kezeléséhez
djangótól.mag.asgi import get_asgi_application
# Importálja a ProtocolTypeRouter és az URLRouter programokat a webaljzat útválasztásának beállításához
csatornákról.routing importálás ProtocolTypeRouter, URLRouter
# Az AuthMiddlewareStack importálása a websocket kezeléséhez
csatornákról.auth import AuthMiddlewareStack
# Websocket útválasztás importálása
a socketapp-ból.routing import ws_urlpatterns
# A DJANGO_SETTINGS_MODULE érték hozzárendelése
os.környezet.setdefault ('DJANGO_SETTINGS_MODULE', 'csatorna_pro.beállítások')
# Definiálja az alkalmazási változót a http és a websocket kezeléséhez
alkalmazás = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Most futtassa újra a következő URL-t a böngészőből az adatok beolvasásához a WebSocketből.

http: // localhost: 8000 / msg /

Ha a fogyasztó és az útválasztó megfelelően működik, akkor a következő digitális óra jelenik meg a böngészőben. Itt az útválasztó elküldte a WebSocket kérést a 'msg /'elérési út a fogyasztóhoz, amely elfogadta a kérést és elküldte az adatokat a sablonba, hogy a böngészőben megjelenítse a digitális órát, ahol az aktuális idő második értéke másodpercenként frissül.

Következtetés

Ez az oktatóanyag bemutatta, hogyan valósíthat meg valós idejű alkalmazást a Django keretrendszer és csatornák segítségével egy egyszerű digitális óra létrehozásával. Más típusú valós idejű alkalmazások is megvalósíthatók a Django és csatornák, például online csevegőrendszerek segítségével. Az oktatóanyagban használt szkriptek csak a Django 3+ és Channel 3+ verziókra vonatkoznak. Tehát, ha egy korábbi Django vagy Channel verziót használ, akkor frissítenie kell a verziót, mielőtt tesztelné az oktatóanyagban található szkriptet.

OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...