Python

So verwenden Sie den Django-Kanal

So verwenden Sie den Django-Kanal
Django ist ein beliebtes Python-Framework zur Entwicklung von Web-Apps mit dem WGSI (Webserver-Gateway-Schnittstelle) und ASGI (Asynchronous Server Gateway Interface) Serverspezifikationen. WGSI wird für die Entwicklung synchroner Python-Apps verwendet und AGSI wird für die Entwicklung asynchroner und synchroner Web-Apps verwendet. Kanal ist eine nützliche Funktion von Django, die verwendet wird, um WebSocket, Chat-Protokoll usw. neben dem HTTP-Protokoll. Channel basiert auf den ASGI-Serverspezifikationen. Eine interaktive bidirektionale Kommunikationssitzung zwischen dem Browser des Benutzers und dem Server kann geöffnet werden mit ein WebSocket. Der Kunde initiiert die WebSocket Verbindung und der Server antwortet mit einem akzeptieren oder schließen Botschaft. Das WebSocket Nachrichten werden mit the in den Kanal gepusht Hersteller und an die geschickt Verbraucher die auf dem Kanal hören. Dieses Tutorial zeigt Ihnen, wie Sie es verwenden Kanäle zu handhaben WebSocket Mitteilungen.

Voraussetzungen

Bevor Sie das in diesem Tutorial gezeigte Skript üben, müssen Sie die folgenden Aufgaben ausführen following.

Eine Django-App einrichten

Führen Sie den folgenden Befehl aus, um eine Django-App namens zu erstellen Socketapp:

$ python3 verwalten.py startapp socketapp

Führen Sie den folgenden Befehl aus, um den Kanal zu installieren:

$ pip Kanäle installieren

Fügen Sie die Kanäle und den App-Namen hinzu INSTALLED_APP Teil von dem die Einstellungen.py Datei:

INSTALLED_APPS = [

'Kanäle',
'Socketapp'
]

Definieren Sie den Wert von ASGI_APPLICATION im die Einstellungen.py Datei:

ASGI_APPLICATION = 'channel_pro.asgi.Anwendung'

Erstellen Sie einen Ordner mit dem Namen Vorlagen innerhalb der Socketapp Ordner und legen Sie den Speicherort der Vorlage für die App im VORLAGEN Teil von dem die Einstellungen.py Datei:

VORLAGEN = [

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

Die folgende Ausgabe wird im Terminal erscheinen, nachdem der Django-Server ausgeführt wurde. Die Ausgabe zeigt, dass ASGI/Channels Version 3.0.3 läuft.

Erstellen Sie eine Vorlagendatei mit dem Namen Index.html am definierten Vorlagenspeicherort, um die vom WebSocket gesendeten Daten anzuzeigen. Das mit JavaScript erstellte Socket-Objekt liest die Daten mit JSON.parse() Methode, dann übergeben Sie den Wert an den Inhalt der

Tag, das den ID-Wert enthält, 'msg.'

Index.html





Django-Kanal-Tutorials




text




Modifiziere den Ansichten.py Datei der Socketapp mit folgendem Inhalt. Das Index.html Vorlagendatei wird im Browser mit dem Text variabel, wenn die Index() Methode dieses Skripts wird von . aufgerufen URLs.py Datei. Wenn keine Nachricht vom Socket übertragen wird, dann wird der Text 'LinuxHinweis' wird im Browser angezeigt.

Ansichten.py

# Rendermodul von Django importieren
von django.Verknüpfungen importieren rendern
# Indexfunktion erstellen, um die HTML-Datei im Browser anzuzeigen
def-Index (Anfrage):
return render(request, "index.html", context='text': 'LinuxHint')

Modifiziere den URLs.py Datei der Socketapp mit folgendem Inhalt. Im Skript sind zwei Pfade definiert: der 'Administrator/'-Pfad wird verwendet, um das Django-Administrations-Dashboard zu öffnen, und der 'Nachricht/' Pfad wird verwendet, um die WebSocket-Nachricht zu lesen.

URLs.py

von django.contrib import admin
von django.URL-Importpfad
aus SocketApp-Importansichten
URLmuster = [
path('admin/', admin.Seite? ˅.URLs),
path('Nachricht/', Ansichten.Index)
]

Wenn die folgende URL ausgeführt wird, ohne die Consumer- und Routing-Dateien zu definieren, funktioniert das HTTP-Protokoll und die folgende Ausgabe wird angezeigt.

http://localhost:8000/msg

Erstellen Sie nun a Verbraucher.py Datei in der Socketapp Ordner mit folgendem Skript. Das verbinden() Methode von ws_consumer wird verwendet, um die Socket-Verbindung zu akzeptieren, den aktuellen Zeitwert jede Sekunde zu lesen und die aktuelle Zeit im JSON-Format über WebSocket zu senden, wenn diese Methode aus der Routing-Datei aufgerufen wird.

Verbraucher.py

# JSON-Modul importieren
json importieren
# WebsocketConsumer importieren
von Kanälen.generisch.Websocket-Import WebsocketConsumer
# Datetime-Modul importieren
aus datetime importieren datetime
# Schlafmodul importieren
ab zeit importieren schlaf
# Definieren Sie die Consumer-Klasse zum Senden der Daten über WebsocketConsumer
Klasse ws_consumer(WebsocketConsumer):
def verbinden (selbst):
selbst.akzeptieren()
während(wahr):
jetzt = Datum/Uhrzeit.jetzt()
selbst.senden (json.dumps('timeValue': jetzt.strftime("%H:%M:%S")))
schlafen(1)

Erstellen Sie die Routing.py innerhalb der Socketapp Ordner mit folgendem Skript. Das 'Nachricht/' Pfad ist im Skript definiert, um den Consumer zum Senden der Daten an den Socket aufzurufen.

Routing.py

von django.URL-Importpfad
von .Verbraucher importieren ws_consumer
# Legen Sie den Pfad zum Aufrufen des Verbrauchers fest
ws_urlmusterns = [
path('msg/', ws_consumer.as_asgi())
]

Modifiziere den asgi.py Datei mit folgendem Skript. Die für die Verarbeitung von HTTP- und WebSocket-Anfragen erforderlichen Module werden in das Skript importiert.

asgi.py

# OS-Modul importieren
Importieren von OS
# Importieren Sie get_asgi_application, um das HTTP-Protokoll zu verarbeiten
von django.Ader.asgi-Import get_asgi_application
# Importieren Sie ProtocolTypeRouter und URLRouter, um das Websocket-Routing festzulegen
von Kanälen.Routing-Import ProtocolTypeRouter, URLRouter
# AuthMiddlewareStack importieren, um Websocket zu verarbeiten
von Kanälen.Auth-Import von AuthMiddlewareStack
# Websocket-Routing importieren
von socketapp.Routing-Import ws_urlpatterns
# Wert für DJANGO_SETTINGS_MODULE zuweisen
os.Umgebung.setdefault('DJANGO_SETTINGS_MODULE', 'channel_pro.die Einstellungen')
# Anwendungsvariable für die Verarbeitung von http und Websocket definieren
application = ProtocolTypeRouter(
'http': get_asgi_application(),
'websocket': AuthMiddlewareStack(URLRouter(ws_urlpatterns))
)

Führen Sie nun die folgende URL im Browser erneut aus, um die Daten aus dem WebSocket zu lesen.

http://localhost:8000/msg/

Wenn Consumer und Router ordnungsgemäß funktionieren, wird die folgende Digitaluhr im Browser angezeigt. Hier hat der Router die WebSocket-Anfrage mit dem 'Nachricht/' Pfad zum Verbraucher, der die Anfrage akzeptiert und die Daten an die Vorlage gesendet hat, um die Digitaluhr im Browser anzuzeigen, wo der zweite Wert der aktuellen Uhrzeit jede Sekunde aktualisiert wird.

Fazit

Dieses Tutorial hat Ihnen gezeigt, wie Sie eine Echtzeitanwendung mit dem Django-Framework und den Kanälen implementieren, indem Sie eine einfache Digitaluhr erstellen. Auch andere Arten von Echtzeitanwendungen können über Django und Kanäle implementiert werden, wie z. B. Online-Chat-Systeme. Die in diesem Tutorial verwendeten Skripte funktionieren nur für Django-Versionen 3+ und Channel-Versionen 3+. Wenn Sie also eine frühere Django- oder Channel-Version verwenden, müssen Sie die Version aktualisieren, bevor Sie das in diesem Tutorial bereitgestellte Skript testen können.

So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...
Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...