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.
- Telepítse a Django 3+ verziót az Ubuntu 20+ verzióra (lehetőleg)
- Hozzon létre egy Django projektet
- Futtassa a Django szervert annak ellenőrzésére, hogy a szerver megfelelően működik-e
Á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 socketappA csatorna telepítéséhez futtassa a következő parancsot:
$ pip telepítési csatornákAdja 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
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óldjangó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 admindjangó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ásaimport 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 útvonaltó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ásaimport 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.