Python

Cara Menggunakan Saluran Django

Cara Menggunakan Saluran Django
Django adalah kerangka kerja Python yang popular yang digunakan untuk mengembangkan aplikasi web menggunakan WGSI (Antara Muka Gateway Pelayan Web) dan ASGI (Asynchronous Server Gateway Interface) spesifikasi pelayan. WGSI digunakan untuk mengembangkan aplikasi Python segerak, dan AGSI digunakan untuk mengembangkan aplikasi web tidak segerak dan segerak. Saluran adalah ciri berguna Django yang digunakan untuk menangani WebSocket, protokol sembang, dll. bersama protokol HTTP. Saluran dibina berdasarkan spesifikasi pelayan ASGI. Sesi komunikasi interaktif dua hala antara penyemak imbas pengguna dan pelayan dapat dibuka dengan menggunakan WebSocket. Pelanggan memulakan Soket Web sambungan dan pelayan bertindak balas dengan terima atau tutup mesej. The Soket Web mesej ditolak ke saluran menggunakan pengeluar dan dihantar ke pengguna yang sedang mendengar di saluran. Tutorial ini menunjukkan kepada anda cara menggunakan saluran menangani Soket Web mesej.

Prasyarat

Sebelum mempraktikkan skrip yang ditunjukkan dalam tutorial ini, pastikan untuk menyelesaikan tugas-tugas berikut.

Sediakan Aplikasi Django

Jalankan arahan berikut untuk membuat aplikasi Django bernama soket:

$ python3 menguruskan.py startapp socketapp

Jalankan arahan berikut untuk memasang saluran:

$ pip memasang saluran

Tambahkan saluran dan nama aplikasi ke DIPASANG_APP sebahagian tetapan.py fail:

INSTALLED_APPS = [

'saluran',
'soket'
]

Tentukan nilai ASGI_APPLICATION di tetapan.py fail:

ASGI_APPLICATION = 'channel_pro.asgi.permohonan '

Buat folder bernama templat di dalam soket folder dan tetapkan lokasi templat aplikasi di TEMPAT sebahagian tetapan.py fail:

TEMPLATES = [

… .
'DIRS': ['/ rumah / fahmida / channel_pro / socketapp / templat'],
… .
,
]

Output berikut akan muncul di terminal setelah menjalankan pelayan Django. Hasilnya menunjukkan bahawa ASGI / Saluran versi 3.0.3 sedang berjalan.

Buat fail templat bernama indeks.html di lokasi templat yang ditentukan untuk memaparkan data yang dihantar oleh WebSocket. Objek soket yang dibuat menggunakan JavaScript akan membaca data menggunakan JSON.parse () kaedah, kemudian masukkan nilai ke dalam kandungan

tag yang mengandungi nilai ID, 'msg.'

indeks.html





Tutorial Saluran Django




teks




Ubah suai pandangan.py fail dari soket dengan kandungan berikut. The indeks.html fail templat akan dipaparkan di penyemak imbas dengan teks pemboleh ubah apabila indeks () kaedah skrip ini dipanggil dari url.py fail. Sekiranya tidak ada mesej yang dihantar dari soket, maka teksnya 'LinuxHint'akan dipaparkan di penyemak imbas.

pandangan.py

# Modul rendering import dari Django
dari django.pintasan import pintasan
# Buat fungsi indeks untuk menampilkan fail HTML ke dalam penyemak imbas
indeks def (permintaan):
return render (permintaan, "indeks.html ", konteks = 'text': 'LinuxHint')

Ubah suai url.py fail dari soket dengan kandungan berikut. Dua jalan ditentukan dalam skrip: 'pentadbir /'jalan digunakan untuk membuka Dashboard Pentadbiran Django, dan'msg /'path digunakan untuk membaca mesej WebSocket.

url.py

dari django.admin import contrib
dari django.laluan import url
dari paparan import socketapp
urlpatterns = [
jalan ('admin /', pentadbir.tapak.url),
jalan ('msg /', paparan.indeks)
]

Apabila URL berikut dijalankan tanpa menentukan pengguna dan fail routing, protokol HTTP akan berfungsi dan output berikut akan muncul.

http: // localhost: 8000 / msg

Sekarang, buat a pengguna.py fail di dalam soket folder dengan skrip berikut. The sambung () kaedah ws_consumer akan digunakan untuk menerima sambungan soket, membaca nilai waktu saat ini setiap detik, dan mengirim waktu saat ini dalam format JSON melalui WebSocket ketika kaedah ini dipanggil dari file routing.

pengguna.py

# Import modul JSON
import json
# Import WebsocketConsumer
dari saluran.generik.websocket import WebsocketConsumer
# Modul import masa
dari datetime import datetime
# Import modul tidur
dari waktu tidur import
# Tentukan kelas pengguna untuk menghantar data melalui WebsocketConsumer
kelas ws_consumer (WebsocketConsumer):
def connect (diri):
diri.terima ()
sementara (Betul):
sekarang = masa.sekarang ()
diri.hantar (json.lambakan ('timeValue': sekarang.strftime ("% H:% M:% S")))
tidur (1)

Buat penghalaan.py di dalam soket folder dengan skrip berikut. The 'msg /'path didefinisikan dalam skrip untuk memanggil pengguna untuk mengirim data ke soket.

penghalaan.py

dari django.laluan import url
dari .pengguna mengimport ws_consumer
# Tetapkan jalan untuk memanggil pengguna
ws_urlpatterns = [
jalan ('msg /', ws_consumer.as_asgi ())
]

Ubah suai asgi.py fail dengan skrip berikut. Modul yang diperlukan untuk menangani permintaan HTTP dan WebSocket diimport dalam skrip.

asgi.py

# Modul import os
import os
# Import get_asgi_application untuk menangani protokol http
dari django.teras.asgi import get_asgi_application
# Import ProtocolTypeRouter dan URLRouter untuk mengatur perutean soket web
dari saluran.routing import ProtocolTypeRouter, URLRouter
# Import AuthMiddlewareStack untuk mengendalikan soket web
dari saluran.author import AuthMiddlewareStack
# Import routing soket web
dari socketapp.routing import ws_urlpatterns
# Tetapkan nilai untuk DJANGO_SETTINGS_MODULE
os.persekitaran.setdefault ('DJANGO_SETTINGS_MODULE', 'saluran_pro.tetapan ')
# Tentukan pemboleh ubah aplikasi untuk mengendalikan http dan soket web
aplikasi = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Sekarang, jalankan URL berikut dari penyemak imbas sekali lagi untuk membaca data dari WebSocket.

http: // localhost: 8000 / msg /

Sekiranya pengguna dan penghala berfungsi dengan baik, jam digital berikut akan dipaparkan di penyemak imbas. Di sini, penghala telah mengirim permintaan WebSocket menggunakan 'msg /'jalan ke pengguna yang telah menerima permintaan tersebut dan mengirim data ke templat untuk menunjukkan jam digital di penyemak imbas di mana nilai kedua dari masa ini diperbarui setiap saat.

Kesimpulannya

Tutorial ini menunjukkan kepada anda bagaimana menerapkan aplikasi real-time menggunakan kerangka dan saluran Django dengan membuat jam digital sederhana. Jenis aplikasi masa nyata yang lain juga dapat dilaksanakan dengan menggunakan Django dan saluran, seperti sistem sembang dalam talian. Skrip yang digunakan dalam tutorial ini berfungsi untuk Django versi 3+ dan Saluran versi 3+ sahaja. Oleh itu, jika anda menggunakan versi Django atau Saluran sebelumnya, maka anda perlu meningkatkan versi sebelum menguji skrip yang disediakan dalam tutorial ini.

Cara Membangunkan Permainan di Linux
Satu dekad yang lalu, tidak banyak pengguna Linux akan meramalkan bahawa sistem operasi kegemaran mereka suatu hari nanti akan menjadi platform permai...
Port Sumber Terbuka Mesin Permainan Komersial
Rekreasi enjin permainan sumber terbuka dan bebas platform boleh digunakan untuk bermain lama dan juga beberapa tajuk permainan yang baru-baru ini. Ar...
Permainan Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar anda ketika menggunakan Linux-ia juga dapat menjadi sumber hiburan kerana anda dapat menggunakannya untuk m...