Pitone

Come usare il canale Django

Come usare il canale Django
Django è un popolare framework Python utilizzato per sviluppare app Web utilizzando il WGSI (Interfaccia gateway del server Web) e ASGI (Asynchronous Server Gateway Interface) specifiche del server. WGSI viene utilizzato per lo sviluppo di app Python sincrone e AGSI viene utilizzato per lo sviluppo di app Web asincrone e sincrone. Canale è una funzionalità utile di Django che viene utilizzata per gestire WebSocket, protocollo di chat, ecc. insieme al protocollo HTTP. Il canale è costruito sulle specifiche del server ASGI. È possibile aprire una sessione di comunicazione interattiva bidirezionale tra il browser dell'utente e il server utilizzando un WebSocket. Il cliente avvia il WebSocket connessione e il server risponde con an accettare o vicino Messaggio. Il WebSocket i messaggi vengono spinti nel canale usando produttori e inviato al consumatori che stanno ascoltando sul canale. Questo tutorial ti mostra come usare canali gestire WebSocket messaggi.

Prerequisiti

Prima di esercitarti con lo script mostrato in questo tutorial, assicurati di completare le seguenti attività.

Configura un'app Django

Esegui il seguente comando per creare un'app Django denominata socketapp:

$ python3 gestire.py startapp socketapp

Eseguire il seguente comando per installare il canale:

$ pip installa canali

Aggiungi i canali e il nome dell'app al INSTALLATA_APP parte di impostazioni.pi file:

INSTALLATE_APPS = [

'canali',
'socket'
]

Definire il valore di ASGI_APPLICATION nel impostazioni.pi file:

ASGI_APPLICATION = 'channel_pro.asgi.applicazione'

Crea una cartella denominata modelli dentro il socketapp cartella e imposta la posizione del modello dell'app nel MODELLI parte di impostazioni.pi file:

MODELLI = [

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

Il seguente output apparirà nel terminale dopo aver eseguito il server Django. L'output mostra che ASGI/Channel versione 3.0.3 è in esecuzione.

Crea un file modello chiamato indice.html nella posizione del modello definita per visualizzare i dati inviati dal WebSocket. L'oggetto socket creato utilizzando JavaScript leggerà i dati utilizzando JSON.parse(), quindi passa il valore nel contenuto del

tag che contiene il valore ID, 'msg.'

indice.html





Tutorial del canale Django




testo




Modifica il visualizzazioni.pi file del socketapp con il seguente contenuto. Il indice.html file modello verrà visualizzato nel browser con il testo variabile quando il indice() il metodo di questo script è chiamato da URL.pi file. Se nessun messaggio viene trasmesso dal socket, il testo 'LinuxSuggerimento'verrà visualizzato nel browser.

visualizzazioni.pi

# Importa il modulo di rendering da Django
da django.scorciatoie importare rendering
# Crea una funzione indice per visualizzare il file HTML nel browser
def indice (richiesta):
return render(richiesta, "indice.html", contesto='testo': 'LinuxHint')

Modifica il URL.pi file del socketapp con il seguente contenuto. Nello script sono definiti due percorsi: il 'amministratore/' viene utilizzato per aprire il dashboard di amministrazione di Django e il 'messaggio/' percorso viene utilizzato per leggere il messaggio WebSocket.

URL.pi

da django.amministratore di importazione contributi
da django.percorso di importazione degli URL
dalle viste di importazione di socketapp
patternurl = [
percorso('admin/', admin.luogo.URL),
percorso('msg/', views.indice)
]

Quando il seguente URL viene eseguito senza definire i file consumer e di routing, il protocollo HTTP funzionerà e apparirà il seguente output output.

http://localhost:8000/msg

Ora, crea un consumatori.pi file all'interno del socketapp cartella con il seguente script. Il Collegare() metodo di ws_consumer verrà utilizzato per accettare la connessione socket, leggere il valore dell'ora corrente ogni secondo e inviare l'ora corrente in formato JSON tramite WebSocket quando questo metodo viene chiamato dal file di routing.

consumatori.pi

# Importa modulo JSON
import json
# Importa WebsocketConsumer
dai canali.generico.importazione websocket WebsocketConsumer
# Importa modulo datetime
da datetime import datetime
# Importa il modulo del sonno
dal tempo importa il sonno
# Definire la classe consumer per inviare i dati tramite WebsocketConsumer
class ws_consumer(WebsocketConsumer):
def connettersi (auto):
se stesso.accettare()
mentre (vero):
ora = data e ora.adesso()
se stesso.invia(json.dumps('timeValue': now.strftime("%H:%M:%S")))
dormire(1)

Crea il instradamento.pi dentro il socketapp cartella con il seguente script. Il 'messaggio/'il percorso è definito nello script per chiamare il consumatore per inviare i dati al socket.

instradamento.pi

da django.percorso di importazione degli URL
a partire dal .i consumatori importano ws_consumer
# Imposta il percorso per chiamare il consumatore
ws_urlpatterns = [
path('msg/', ws_consumer.as_asgi())
]

Modifica il asgi.pi file con il seguente script. I moduli necessari per gestire le richieste HTTP e WebSocket vengono importati nello script.

asgi.pi

# Importa modulo sistema operativo
importare il sistema operativo
# Importa get_asgi_application per gestire il protocollo http
da django.nucleo.asgi import get_asgi_application
# Import ProtocolTypeRouter e URLRouter per impostare il routing del websocket
dai canali.importazione di routing ProtocolTypeRouter, URLRouter
# Importa AuthMiddlewareStack per gestire websocket
dai canali.auth import AuthMiddlewareStack
# Importa routing websocket
da socketapp.importazione di routing ws_urlpatterns
# Assegna un valore per DJANGO_SETTINGS_MODULE
os.ambiente.setdefault('DJANGO_SETTINGS_MODULE', 'channel_pro.impostazioni')
# Definisci la variabile dell'applicazione per gestire http e websocket
application = ProtocolTypeRouter(
'http': get_asgi_application(),
'websocket': AuthMiddlewareStack(URLRouter(ws_urlpatterns))
)

Ora, esegui nuovamente il seguente URL dal browser per leggere i dati dal WebSocket.

http://localhost:8000/msg/

Se il consumatore e il router funzionano correttamente, nel browser verrà visualizzato il seguente orologio digitale. Qui, il router ha inviato la richiesta WebSocket utilizzando il 'messaggio/' percorso al consumatore che ha accettato la richiesta e ha inviato i dati al template per mostrare l'orologio digitale nel browser dove il secondo valore dell'ora corrente si aggiorna ogni secondo.

Conclusione

Questo tutorial ti ha mostrato come implementare un'applicazione in tempo reale utilizzando il framework e i canali Django creando un semplice orologio digitale. È possibile implementare anche altri tipi di applicazioni in tempo reale utilizzando Django e canali, come i sistemi di chat online. Gli script utilizzati in questo tutorial funzionano solo per Django versioni 3+ e Channel versioni 3+. Quindi, se stai utilizzando una versione precedente di Django o Channel, dovrai aggiornare la versione prima di testare lo script fornito in questo tutorial.

Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...
I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...
Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...