Python

Hvordan bruke Django Channel

Hvordan bruke Django Channel
Django er et populært Python-rammeverk som brukes til å utvikle webapper ved hjelp av WGSI (Web Server Gateway Interface) og ASGI (Asynchronous Server Gateway Interface) server spesifikasjoner. WGSI brukes til å utvikle synkrone Python-apper, og AGSI brukes til å utvikle asynkrone og synkrone webapper. Kanal er en nyttig funksjon i Django som brukes til å håndtere WebSocket, chatprotokoll osv. ved siden av HTTP-protokollen. Channel er bygget på ASGI-serverens spesifikasjoner. En toveis interaktiv kommunikasjonsøkt mellom brukerens nettleser og serveren kan åpnes ved hjelp av en WebSocket. Klienten initierer WebSocket tilkoblingen og serveren svarer med en aksepterer eller Lukk beskjed. De WebSocket meldinger skyves inn i kanalen ved hjelp av produsenter og sendt til forbrukere som lytter på kanalen. Denne opplæringen viser deg hvordan du bruker kanaler å håndtere WebSocket meldinger.

Forutsetninger

Før du trener på skriptet som vises i denne opplæringen, må du fullføre følgende oppgaver.

Sett opp en Django-app

Kjør følgende kommando for å opprette en Django-app med navnet stikkontakt:

$ python3 administrere.py startapp socketapp

Kjør følgende kommando for å installere kanalen:

$ pip installere kanaler

Legg til kanalene og appnavnet til INSTALLERT_APP del av innstillinger.py fil:

INSTALLED_APPS = [
..
'kanaler',
'socketapp'
]

Definer verdien av ASGI_APPLICATION i innstillinger.py fil:

ASGI_APPLICATION = 'channel_pro.asgi.applikasjon'

Opprett en mappe med navnet maler inne i stikkontakt mappen og angi malens plassering av appen i MALER del av innstillinger.py fil:

MALER = [

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

Følgende utdata vises i terminalen etter at du har kjørt Django-serveren. Utgangen viser at ASGI / Channels versjon 3.0.3 kjører.

Opprett en malfil med navnet indeks.html på den definerte malplasseringen for å vise dataene som sendes av WebSocket. Socket-objektet som er opprettet ved hjelp av JavaScript, vil lese dataene ved hjelp av JSON.parse () -metoden, og send deretter verdien til innholdet i

tag som inneholder ID-verdien, 'msg.'

indeks.html





Django Channel Tutorials




text




Endre utsikt.py fil av stikkontakt med følgende innhold. De indeks.html malfilen vises i nettleseren med tekst variabel når indeks () metoden for dette skriptet kalles fra nettadresser.py fil. Hvis det ikke blir sendt noen melding fra kontakten, blir teksten 'LinuxHintvises i nettleseren.

utsikt.py

# Importer gjengivelsesmodul fra Django
fra django.snarveier import gjengis
# Opprett indeksfunksjon for å vise HTML-filen i nettleseren
def indeks (forespørsel):
return render (forespørsel, "indeks.html ", context = 'text': 'LinuxHint')

Endre nettadresser.py fil av stikkontakt med følgende innhold. To stier er definert i skriptet: 'admin /'sti brukes til å åpne Django Administration Dashboard, og'msg /stien brukes til å lese WebSocket-meldingen.

nettadresser.py

fra django.bidrag importadministrator
fra django.URL-adresse for import
fra socketapp-importvisninger
urlpatterns = [
sti ('admin /', admin.nettstedet.nettadresser),
sti ('msg /', visninger.indeks)
]

Når følgende URL kjøres uten å definere forbruker- og rutefiler, vil HTTP-protokollen fungere og følgende utdata vises.

http: // localhost: 8000 / msg

Lag nå en forbrukere.py filen inne i stikkontakt mappe med følgende skript. De koble() Metode av ws_consumer vil bli brukt til å godta stikkontakten, lese gjeldende tidsverdi hvert sekund, og sende gjeldende tid i JSON-format via WebSocket når denne metoden kalles fra rutefilen.

forbrukere.py

# Importer JSON-modul
importere json
# Importer WebsocketConsumer
fra kanaler.generisk.websocket import WebsocketConsumer
# Importer datetime-modul
fra datetime importer datetime
# Importer søvnmodul
fra tid importerer søvn
# Definer forbrukerklassen for å sende dataene gjennom WebsocketConsumer
klasse ws_consumer (WebsocketConsumer):
def connect (selv):
selv-.aksepterer()
mens (True):
nå = datetime.nå()
selv-.send (json.dumps ('timeValue': nå.strftime ("% H:% M:% S")))
sove (1)

Opprett ruting.py inne i stikkontakt mappe med følgende skript. The 'msg /stien er definert i skriptet for å ringe forbrukeren for å sende dataene til kontakten.

ruting.py

fra django.URL-adresse for import
fra .forbrukere importerer ws_consumer
# Sett veien for å ringe forbrukeren
ws_urlpatterns = [
bane ('msg /', ws_consumer.as_asgi ())
]

Endre asgi.py filen med følgende skript. Modulene som kreves for å håndtere HTTP- og WebSocket-forespørsler importeres i skriptet.

asgi.py

# Importer os-modul
importer os
# Importer get_asgi_application for å håndtere http-protokollen
fra django.kjerne.asgi import get_asgi_application
# Importer ProtocolTypeRouter og URLRouter for å angi rutingen for websocket
fra kanaler.ruting import ProtocolTypeRouter, URLRouter
# Importer AuthMiddlewareStack for å håndtere websocket
fra kanaler.godkjenne importere AuthMiddlewareStack
# Importer ruting av websokkel
fra socketapp.rutingimport ws_urlpatterns
# Tildel verdi for DJANGO_SETTINGS_MODULE
os.miljø.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.innstillinger ')
# Definer applikasjonsvariabel for å håndtere http og websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Kjør nå følgende URL fra nettleseren for å lese dataene fra WebSocket.

http: // localhost: 8000 / msg /

Hvis forbrukeren og ruteren fungerer som den skal, vises følgende digitale klokke i nettleseren. Her har ruteren sendt WebSocket-forespørselen ved å bruke 'msg /vei til forbrukeren som har akseptert forespørselen og sendt dataene til malen for å vise den digitale klokken i nettleseren der den andre verdien av gjeldende tid oppdateres hvert sekund.

Konklusjon

Denne opplæringen viste deg hvordan du implementerer en sanntidsapplikasjon ved hjelp av Django rammeverk og kanaler ved å lage en enkel digital klokke. Andre typer sanntidsapplikasjoner kan også implementeres ved hjelp av Django og kanaler, for eksempel online chattesystemer. Skriptene som brukes i denne opplæringen, fungerer bare for Django versjoner 3+ og Channel versjoner 3+. Så hvis du bruker en tidligere Django- eller Channel-versjon, må du oppgradere versjonen før du tester skriptet som er gitt i denne opplæringen.

Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...