Předpoklady
Před procvičením skriptu zobrazeného v tomto kurzu nezapomeňte dokončit následující úkoly.
- Nainstalujte Django verze 3+ na Ubuntu 20+ (nejlépe)
- Vytvořte projekt Django
- Spusťte server Django a zkontrolujte, zda server funguje správně
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 socketappSpusťte následující příkaz k instalaci kanálu:
$ pip instalační kanályPř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
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 Djangaod 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 adminod 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 JSONimportovat 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 URLz .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 moduluimport 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.