Piton

Kako se koristi Django kanal

Kako se koristi Django kanal
Django je popularni Python okvir koji se koristi za razvoj web aplikacija pomoću WGSI (Sučelje mrežnog poslužitelja) i ASGI (Asynchronous Server Gateway Interface) specifikacije poslužitelja. WGSI se koristi za razvoj sinkronih Python aplikacija, a AGSI za razvoj asinkronih i sinkronih web aplikacija. Kanal je korisna značajka Djanga koja se koristi za rukovanje WebSocketom, chat protokolom itd. uz HTTP protokol. Kanal se gradi na specifikacijama ASGI poslužitelja. Dvosmjerna interaktivna sesija komunikacije između korisnikovog preglednika i poslužitelja može se otvoriti pomoću WebSocket. Klijent pokreće WebSocket vezu i poslužitelj odgovara znakom prihvatiti ili Zatvoriti poruka. The WebSocket poruke se guraju u kanal pomoću proizvođači i poslan na potrošači koji slušaju na kanalu. Ovaj vam vodič pokazuje kako se koristi kanali rukovati WebSocket poruke.

Preduvjeti

Prije vježbanja skripte prikazane u ovom vodiču, ispunite sljedeće zadatke.

Postavite aplikaciju Django

Pokrenite sljedeću naredbu za stvaranje Django aplikacije s imenom socketapp:

$ python3 upravljanje.py startapp socketapp

Pokrenite sljedeću naredbu da biste instalirali kanal:

$ pip instalacijski kanali

Dodajte kanale i naziv aplikacije u INSTALLED_APP dio postavke.py datoteka:

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

Definirajte vrijednost ASGI_APPLICATION u postavke.py datoteka:

ASGI_APPLICATION = 'channel_pro.asgi.prijava '

Stvorite mapu s imenom predlošci unutar socketapp mapu i postavite mjesto predloška aplikacije u PREDLOZI dio postavke.py datoteka:

PREDLOZI = [

.. .
'DIRS': ['/ home / fahmida / channel_pro / socketapp / predlošci'],
.. .
,
]

Sljedeći će se izlaz pojaviti u terminalu nakon pokretanja Django poslužitelja. Izlaz pokazuje da je verzija ASGI / Kanali 3.0.3 radi.

Stvorite datoteku predloška s imenom indeks.html na definiranom mjestu predloška za prikaz podataka koje šalje WebSocket. Objekt socket stvoren pomoću JavaScript-a očitat će podatke pomoću JSON-a.parse () metoda, a zatim proslijedite vrijednost u sadržaj

oznaka koja sadrži vrijednost ID, 'msg.'

indeks.html





Vodiči za Django Channel




text




Izmijenite pogleda.py kartoteka socketapp sa sljedećim sadržajem. The indeks.html Datoteka predloška prikazat će se u pregledniku s tekst varijabla kada je indeks() metoda ove skripte poziva se iz url adrese.py datoteka. Ako se iz utičnice ne prenosi poruka, tada se prikazuje tekst 'LinuxHint'prikazat će se u pregledniku.

pogleda.py

# Uvoz modula prikaza iz Djanga
iz djanga.prečaci uvoz render
# Stvorite funkciju indeksa za prikaz HTML datoteke u pregledniku
def indeks (zahtjev):
return render (zahtjev, "indeks.html ", context = 'text': 'LinuxHint')

Izmijenite url adrese.py kartoteka socketapp sa sljedećim sadržajem. U skripti su definirane dvije staze: 'admin /'put se koristi za otvaranje nadzorne ploče uprave Django i'poruka /'put se koristi za čitanje poruke WebSocket.

url adrese.py

iz djanga.doprinos uvoz admin
iz djanga.put uvoza URL-ova
iz prikaza uvoza socketapp
urlpatterns = [
put ('admin /', admin.web mjesto.URL-ovi),
path ('msg /', prikazi.indeks)
]

Kada se izvrši sljedeći URL bez definiranja potrošača i datoteka usmjeravanja, HTTP protokol će raditi i pojavit će se sljedeći izlaz.

http: // localhost: 8000 / msg

Sada stvorite a potrošači.py datoteka unutar socketapp mapa sa sljedećom skriptom. The Spojiti() metoda ws_consumer koristit će se za prihvaćanje priključka utičnice, čitanje trenutne vrijednosti vremena svake sekunde i slanje trenutnog vremena u JSON formatu putem WebSocket-a kada se ova metoda pozove iz datoteke usmjeravanja.

potrošači.py

# Uvoz JSON modula
uvoz json
# Uvoz WebsocketConsumer
s kanala.generički.websocket import WebsocketConsumer
# Uvoz modula za datum i vrijeme
od datetime uvoz datetime
# Uvoz modula spavanja
od vremena uvoz san
# Definirajte klasu potrošača za slanje podataka putem WebsocketConsumer
klasa ws_consumer (WebsocketConsumer):
def povezivanje (samo):
sebe.prihvatiti()
while (True):
sada = datum i vrijeme.sada()
sebe.poslati (json.odlagališta ('timeValue': sada.strftime ("% H:% M:% S")))
spavanje (1)

Stvorite usmjeravanje.py unutar socketapp mapa sa sljedećom skriptom. "poruka /'put je definiran u skripti za pozivanje potrošača radi slanja podataka u utičnicu.

usmjeravanje.py

iz djanga.put uvoza URL-ova
iz .potrošači uvoze ws_consumer
# Postavite put pozivanja potrošača
ws_urlpatterns = [
path ('msg /', ws_consumer.as_asgi ())
]

Izmijenite asgi.py datoteka sa sljedećom skriptom. Moduli koji su potrebni za obradu HTTP i WebSocket zahtjeva uvoze se u skriptu.

asgi.py

# Uvoz os modula
uvoz os
# Uvezite get_asgi_application za obradu http protokola
iz djanga.jezgra.asgi uvoz get_asgi_application
# Uvezite ProtocolTypeRouter i URLRouter da biste postavili usmjeravanje websoketa
s kanala.usmjeravanje uvoza ProtocolTypeRouter, URLRouter
# Uvezite AuthMiddlewareStack za obradu web-utičnice
s kanala.auth uvoz AuthMiddlewareStack
# Uvoz websocket usmjeravanja
iz socketappa.usmjeravanje uvoza ws_urlpatterns
# Dodijelite vrijednost za DJANGO_SETTINGS_MODULE
os.okolina.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.postavke ')
# Definirajte varijablu aplikacije za obradu http i websocket
aplikacija = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Sada ponovo pokrenite sljedeći URL iz preglednika da biste pročitali podatke iz WebSocket-a.

http: // localhost: 8000 / msg /

Ako potrošač i usmjerivač rade ispravno, tada će se sljedeći digitalni sat prikazati u pregledniku. Ovdje je usmjerivač poslao zahtjev WebSocket koristeći 'poruka /'put do potrošača koji je prihvatio zahtjev i poslao podatke u predložak kako bi se prikazao digitalni sat u pregledniku gdje se druga vrijednost trenutnog vremena ažurira svake sekunde.

Zaključak

Ovaj vam je vodič pokazao kako implementirati aplikaciju u stvarnom vremenu pomoću Django okvira i kanala stvaranjem jednostavnog digitalnog sata. Druge vrste aplikacija u stvarnom vremenu također se mogu implementirati pomoću Djanga i kanala, poput internetskih sustava za chat. Skripte korištene u ovom uputstvu rade samo za verzije Django 3+ i Channel 3+. Dakle, ako koristite stariju verziju Django ili Channel, morat ćete nadograditi verziju prije testiranja skripte navedene u ovom vodiču.

Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...
Instalirajte najnoviji Dolphin Emulator za Gamecube i Wii na Linux
Dolphin Emulator omogućuje vam igranje odabranih Gamecube i Wii igara na Linux osobnim računalima (PC). Dolphin Emulator je slobodno dostupan i emula...
Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...