Python

Kuidas kasutada Django kanalit

Kuidas kasutada Django kanalit
Django on populaarne Pythoni raamistik, mida kasutatakse veebirakenduste arendamiseks WGSI (Veebiserveri lüüsi liides) ja ASGI (Asynchronous Server Gateway Interface) serveri spetsifikatsioonid. WGSI-d kasutatakse Pythoni sünkroonrakenduste arendamiseks ning AGSI-d asünkroonsete ja sünkroonsete veebirakenduste arendamiseks. Kanal on Django kasulik funktsioon, mida kasutatakse WebSocket'i, vestlusprotokolli jms käitlemiseks. kõrval HTTP-protokolli. Kanal on üles ehitatud ASGI serveri spetsifikatsioonidele. Kasutaja abil saab avada kahepoolse interaktiivse suhtlemisseansi kasutaja brauseri ja serveri vahel veebipesa. Klient algatab Veebipesa ühendus ja server vastab aktsepteerima või Sulge sõnum. The Veebipesa sõnumid lükatakse kanalile kasutades tootjad ja saadeti tarbijatele kes kanalil kuulavad. See õpetus näitab teile, kuidas seda kasutada kanalid käsitlema Veebipesa sõnumeid.

Eeldused

Enne selles õpetuses näidatud skripti harjutamist täitke kindlasti järgmised ülesanded.

Seadistage Django rakendus

Django nimelise rakenduse loomiseks käivitage järgmine käsk socketapp:

$ python3 hallata.py startapp socketapp

Kanali installimiseks käivitage järgmine käsk:

$ pip installikanalid

Lisage kanalile kanalid ja rakenduse nimi INSTALLED_APP osa seaded.py fail:

INSTALLED_APPS = [

"kanalid",
'socketapp'
]

Määrake jaotises ASGI_APPLICATION väärtus seaded.py fail:

ASGI_APPLICATION = 'kanal_pro.asgi.taotlus '

Looge kaust nimega mallid sees socketapp kausta ja määrake rakenduses malli asukoht MALLID osa seaded.py fail:

MALLID = [

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

Järgmine väljund ilmub terminalis pärast Django serveri käivitamist. Väljund näitab, et ASGI / Channels versioon 3.0.3 töötab.

Looge mallifail nimega indeks.HTML määratletud malli asukohas WebSocket'i saadetud andmete kuvamiseks. JavaScripti abil loodud sokliobjekt loeb andmeid JSON-i abil.parse () meetod, seejärel edastage väärtus

silt, mis sisaldab ID-väärtust 'msg."

indeks.HTML





Django kanali õpetused




text




Muutke vaated.py faili socketapp järgmise sisuga. The indeks.HTML mallifail kuvatakse brauseris koos teksti muutuja, kui indeks () Selle skripti meetodit kutsutakse URL-id.py faili. Kui pistikupesast ei edastata ühtegi teadet, kuvatakse tekstLinuxi vihje'kuvatakse brauseris.

vaated.py

# Impordi renderdusmoodul Djangost
alates django.otseteed impordi renderdamine
# Loo indeksfunktsioon HTML-faili kuvamiseks brauseris
def indeks (taotlus):
tagastage renderdamine (taotlus, indeks.html ", context = 'text': 'LinuxHint')

Muutke URL-id.py faili socketapp järgmise sisuga. Skriptis on määratletud kaks rada:admin /'teed kasutatakse Django administratsiooni juhtpaneeli avamiseks ja'sõnum /'teed kasutatakse WebSocket'i sõnumi lugemiseks.

URL-id.py

alates django.kaastöö impordi admin
alates django.URL-ide importimise tee
socketapp-i impordivaadetest
urlpatterns = [
tee ('admin /', admin.sait.URL-id),
tee ('msg /', vaated.indeks)
]

Kui järgmine URL täidetakse ilma tarbija ja marsruutimisfaile määratlemata, töötab HTTP-protokoll ja kuvatakse järgmine väljund.

http: // localhost: 8000 / msg

Nüüd looge a tarbijatele.py faili sees socketapp kaust järgmise skriptiga. The ühendama () meetod ws_tarbija kasutatakse sokliühenduse aktsepteerimiseks, iga sekundi praeguse ajaväärtuse lugemiseks ja praeguse aja saatmiseks WebSocket'i kaudu JSON-vormingus, kui marsruutimisfailist seda meetodit kutsutakse.

tarbijatele.py

# Importige JSON-moodul
import json
# Impordi WebsocketConsumer
kanalitest.üldine.veebipesa importimine WebsocketConsumer
# Impordi kuupäevaaja moodul
alates datetime impordi datetime
# Impordi unemoodul
ajast impordi uni
# Määratlege tarbijaklass andmete saatmiseks WebsocketConsumer kaudu
klass ws_consumer (WebsocketConsumer):
def connect (ise):
ise.nõustu ()
samas (tõene):
nüüd = kuupäevaeg.nüüd ()
ise.saada (json.prügimäed ('timeValue': nüüd.algusaeg ("% H:% M:% S"))
magama (1)

Looge marsruutimine.py sees socketapp kaust järgmise skriptiga. "sõnum /'skriptis on määratletud tee, et helistada tarbijale andmete pesasse saatmiseks.

marsruutimine.py

alates django.URL-ide importimise tee
alates .tarbijad impordivad ws_consumer
# Määrake tarbijale helistamise tee
ws_urlpatterns = [
tee ('msg /', ws_tarbija.as_asgi ()
]

Muutke asgi.py fail järgmise skriptiga. HTTP- ja WebSocket-päringute töötlemiseks vajalikud moodulid imporditakse skripti.

asgi.py

# OS-i mooduli importimine
impordi os
# Importige get_asgi_application http-protokolli käsitsemiseks
alates django.tuum.asgi import get_asgi_rakendus
# Veebipesa marsruutimise määramiseks importige ProtocolTypeRouter ja URLRouter
kanalitest.marsruudi importimine ProtocolTypeRouter, URLRouter
# Veebipesa käsitsemiseks importige AuthMiddlewareStack
kanalitest.Autent importib AuthMiddlewareStacki
# Impordi veebipesa marsruutimine
socketappist.marsruutimine import ws_urlpatterns
# Määra väärtusele DJANGO_SETTINGS_MODULE
os.keskkond.setdefault ('DJANGO_SETTINGS_MODULE', 'kanal_pro.seaded ')
# Määratlege rakenduse muutuja, mis haldab httpi ja veebipesa
rakendus = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Nüüd käivitage brauseris järgmine URL, et lugeda andmeid WebSocketist.

http: // localhost: 8000 / msg /

Kui klient ja ruuter töötavad korralikult, kuvatakse brauseris järgmine digitaalkell. Siin on ruuter saatnud WebSocket-i päringu, kasutadessõnum /'tee selle tarbija juurde, kes on päringu vastu võtnud ja saatnud andmed mallile, et näidata digitaalset kella brauseris, kus praeguse aja teist väärtust värskendatakse iga sekundi järel.

Järeldus

See õpetus näitas teile, kuidas rakendada reaalajas rakendust Django raamistiku ja kanalite abil, luues lihtsa digitaalse kella. Django ja kanalite abil saab rakendada ka muud tüüpi reaalajas rakendusi, näiteks veebivestlussüsteeme. Selles õpetuses kasutatud skriptid töötavad ainult Django versioonidele 3+ ja Channel versioonidele 3+. Niisiis, kui kasutate varasemat Django või Kanali versiooni, peate enne selles õpetuses pakutava skripti testimist versiooni täiendama.

Installige Linuxile uusim Dolphin Emulator for Gamecube & Wii
Dolphini emulaator võimaldab teil mängida valitud Gamecube & Wii mänge Linuxi personaalarvutites (PC). Vabalt saadaval oleva ja avatud lähtekoodiga m...
Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...
Parimad Linuxi mängukonsooli emulaatorid
Selles artiklis loetletakse Linuxi jaoks saadaval olev populaarne mängukonsooli emuleerimise tarkvara. Emuleerimine on tarkvara ühilduvuse kiht, mis j...