Pitón

Cómo usar el canal Django

Cómo usar el canal Django
Django es un marco de trabajo de Python popular que se utiliza para desarrollar aplicaciones web utilizando el WGSI (Interfaz de puerta de enlace del servidor web) y ASGI (Interfaz de puerta de enlace de servidor asincrónico) especificaciones del servidor. WGSI se utiliza para desarrollar aplicaciones Python síncronas, y AGSI se utiliza para desarrollar aplicaciones web asíncronas y síncronas. Canal es una característica útil de Django que se usa para manejar WebSocket, protocolo de chat, etc. junto con el protocolo HTTP. El canal se basa en las especificaciones del servidor ASGI. Se puede abrir una sesión de comunicación interactiva bidireccional entre el navegador del usuario y el servidor utilizando un WebSocket. El cliente inicia el WebSocket conexión y el servidor responde con un aceptar o cerca mensaje. La WebSocket los mensajes se insertan en el canal mediante productores y enviado a la consumidores que estan escuchando en el canal. Este tutorial le muestra cómo usar canales manejar WebSocket mensajes.

Prerrequisitos

Antes de practicar el script que se muestra en este tutorial, asegúrese de completar las siguientes tareas.

Configurar una aplicación Django

Ejecute el siguiente comando para crear una aplicación Django llamada calcetín:

$ python3 administrar.py startapp socketapp

Ejecute el siguiente comando para instalar el canal:

$ pip instalar canales

Agregue los canales y el nombre de la aplicación al INSTALLED_APP parte de ajustes.py expediente:

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

Defina el valor de ASGI_APPLICATION en el ajustes.py expediente:

ASGI_APPLICATION = 'channel_pro.asgi.solicitud'

Crea una carpeta llamada plantillas dentro de calcetín carpeta y establezca la ubicación de la plantilla de la aplicación en el PLANTILLAS parte de ajustes.py expediente:

PLANTILLAS = [

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

La siguiente salida aparecerá en la terminal después de ejecutar el servidor Django. La salida muestra que ASGI / Channels versión 3.0.3 está corriendo.

Crea un archivo de plantilla llamado índice.html en la ubicación de la plantilla definida para mostrar los datos enviados por WebSocket. El objeto de socket que se crea usando JavaScript leerá los datos usando JSON.método parse (), luego pase el valor al contenido del

etiqueta que contiene el valor de ID, 'msg.'

índice.html





Tutoriales del canal Django




texto




Modificar el puntos de vista.py archivo de la calcetín con el siguiente contenido. La índice.html El archivo de plantilla se mostrará en el navegador con el texto variable cuando el índice() El método de este script se llama desde el urls.py expediente. Si no se transmite ningún mensaje desde el conector, entonces el texto 'LinuxHint'se mostrará en el navegador.

puntos de vista.py

# Importar módulo de renderizado desde Django
de django.importación de atajos render
# Crear función de índice para mostrar el archivo HTML en el navegador
def index (solicitud):
return render (solicitud, "índice.html ", context = 'texto': 'LinuxHint')

Modificar el urls.py archivo de la calcetín con el siguiente contenido. Se definen dos rutas en el script: el 'administración/'se usa para abrir el panel de administración de Django, y la ruta'msg /'ruta se usa para leer el mensaje de WebSocket.

urls.py

de django.administrador de importación de contribuciones
de django.ruta de importación de URL
desde vistas de importación de socketapp
urlpatterns = [
ruta ('admin /', admin.sitio.urls),
ruta ('msg /', vistas.índice)
]

Cuando se ejecuta la siguiente URL sin definir el consumidor y los archivos de enrutamiento, el protocolo HTTP funcionará y aparecerá el siguiente resultado.

http: // localhost: 8000 / msg

Ahora, crea un consumidores.py archivo dentro del calcetín carpeta con el siguiente script. La conectar() método de ws_consumer se utilizará para aceptar la conexión de socket, leer el valor de la hora actual cada segundo y enviar la hora actual en formato JSON a través de WebSocket cuando se llame a este método desde el archivo de enrutamiento.

consumidores.py

# Importar módulo JSON
importar json
# Importar WebsocketConsumer
de los canales.genérico.importación de websocket WebsocketConsumer
# Importar módulo de fecha y hora
desde fecha y hora importar fecha y hora
# Importar módulo de sueño
desde el momento de importar el sueño
# Defina la clase de consumidor para enviar los datos a través de WebsocketConsumer
clase ws_consumer (WebsocketConsumer):
def connect (auto):
uno mismo.aceptar()
while (Verdadero):
ahora = fecha y hora.ahora()
uno mismo.enviar (json.dumps ('timeValue': ahora.strftime ("% H:% M:% S")))
dormir (1)

Crea el enrutamiento.py dentro de calcetín carpeta con el siguiente script. La 'msg /'La ruta está definida en el script para llamar al consumidor para enviar los datos al socket.

enrutamiento.py

de django.ruta de importación de URL
de .los consumidores importan ws_consumer
# Establecer la ruta para llamar al consumidor
ws_urlpatterns = [
ruta ('msg /', ws_consumer.as_asgi ())
]

Modificar el asgi.py archivo con el siguiente script. Los módulos necesarios para manejar las solicitudes HTTP y WebSocket se importan en el script.

asgi.py

# Importar módulo de sistema operativo
importar sistema operativo
# Importar get_asgi_application para manejar el protocolo http
de django.centro.asgi import get_asgi_application
# Import ProtocolTypeRouter y URLRouter para configurar el enrutamiento websocket
de los canales.enrutamiento de importación ProtocolTypeRouter, URLRouter
# Importar AuthMiddlewareStack para manejar websocket
de los canales.auth import AuthMiddlewareStack
# Importar enrutamiento de websocket
de socketapp.importación de enrutamiento ws_urlpatterns
# Asignar valor para DJANGO_SETTINGS_MODULE
os.reinar.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.ajustes')
# Definir variable de aplicación para manejar http y websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Ahora, ejecute la siguiente URL desde el navegador nuevamente para leer los datos de WebSocket.

http: // localhost: 8000 / msg /

Si el consumidor y el enrutador funcionan correctamente, se mostrará el siguiente reloj digital en el navegador. Aquí, el enrutador ha enviado la solicitud de WebSocket usando el 'msg /'ruta al consumidor que aceptó la solicitud y envió los datos a la plantilla para mostrar el reloj digital en el navegador donde el segundo valor de la hora actual se actualiza cada segundo.

Conclusión

Este tutorial le mostró cómo implementar una aplicación en tiempo real utilizando el marco y los canales de Django mediante la creación de un reloj digital simple. También se pueden implementar otros tipos de aplicaciones en tiempo real utilizando Django y canales, como los sistemas de chat en línea. Los scripts utilizados en este tutorial funcionan solo para las versiones 3+ de Django y las versiones 3+ de Channel. Por lo tanto, si está utilizando una versión anterior de Django o Channel, deberá actualizar la versión antes de probar el script proporcionado en este tutorial.

Los 5 mejores productos ergonómicos de mouse de computadora para Linux
¿El uso prolongado de la computadora causa dolor en la muñeca o los dedos?? ¿Sufre de rigidez en las articulaciones y constantemente tiene que dar la ...
Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...
Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...