Pitão

Como usar o canal Django

Como usar o canal Django
Django é uma estrutura Python popular usada para desenvolver aplicativos da web usando o WGSI (Interface de Gateway de Servidor Web) e ASGI (Asynchronous Server Gateway Interface) especificações do servidor. WGSI é usado para desenvolver aplicativos Python síncronos e AGSI é usado para desenvolver aplicativos web assíncronos e síncronos. Canal é um recurso útil do Django que é usado para lidar com WebSocket, protocolo de bate-papo, etc. ao lado do protocolo HTTP. O canal é construído com base nas especificações do servidor ASGI. Uma sessão de comunicação interativa bidirecional entre o navegador do usuário e o servidor pode ser aberta usando um WebSocket. O cliente inicia o WebSocket conexão e o servidor responde com um aceitar ou perto mensagem. O WebSocket as mensagens são enviadas para o canal usando produtores e enviado para o consumidores que estão ouvindo no canal. Este tutorial mostra como usar canais lidar WebSocket mensagens.

Pré-requisitos

Antes de praticar o script mostrado neste tutorial, certifique-se de concluir as seguintes tarefas.

Configurar um aplicativo Django

Execute o seguinte comando para criar um aplicativo Django chamado socketapp:

$ python3 manage.py startapp socketapp

Execute o seguinte comando para instalar o canal:

Canais de instalação de $ pip

Adicione os canais e o nome do aplicativo ao INSTALLED_APP parte de definições.py Arquivo:

INSTALLED_APPS = [

'canais',
'socketapp'
]

Defina o valor de ASGI_APPLICATION no definições.py Arquivo:

ASGI_APPLICATION = 'channel_pro.Asgi.aplicativo'

Crie uma pasta chamada modelos dentro de socketapp pasta e definir a localização do modelo do aplicativo no MODELOS parte de definições.py Arquivo:

MODELOS = [

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

A seguinte saída aparecerá no terminal após a execução do servidor Django. A saída mostra que ASGI / Channels versão 3.0.3 está correndo.

Crie um arquivo de modelo chamado índice.html no local do modelo definido para exibir os dados enviados pelo WebSocket. O objeto de soquete que é criado usando JavaScript lerá os dados usando o JSON.método parse () e, em seguida, passe o valor para o conteúdo do

tag que contém o valor de ID, 'msg.'

índice.html





Tutoriais do canal Django




texto




Modifique o Visualizações.py arquivo do socketapp com o seguinte conteúdo. O índice.html arquivo de modelo será exibido no navegador com o texto variável quando o índice() método deste script é chamado a partir do urls.py Arquivo. Se nenhuma mensagem for transmitida do soquete, o texto 'LinuxHint'será exibido no navegador.

Visualizações.py

# Importar módulo de renderização do Django
de django.importação de atalhos renderização
# Criar função de índice para exibir o arquivo HTML no navegador
índice def (pedido):
retornar render (pedido, "índice.html ", context = 'text': 'LinuxHint')

Modifique o urls.py arquivo do socketapp com o seguinte conteúdo. Dois caminhos são definidos no script: o 'admin /'path é usado para abrir o Django Administration Dashboard, e o'msg /'caminho é usado para ler a mensagem WebSocket.

urls.py

de django.contrib import admin
de django.caminho de importação de urls
de visualizações de importação de socketapp
urlpatterns = [
caminho ('admin /', admin.local.urls),
caminho ('msg /', visualizações.índice)
]

Quando o seguinte URL é executado sem definir o consumidor e os arquivos de roteamento, o protocolo HTTP funcionará e a seguinte saída aparecerá.

http: // localhost: 8000 / msg

Agora, crie um consumidores.py arquivo dentro do socketapp pasta com o seguinte script. O conectar() método de ws_consumer será usado para aceitar a conexão do soquete, ler o valor da hora atual a cada segundo e enviar a hora atual no formato JSON via WebSocket quando este método for chamado a partir do arquivo de roteamento.

consumidores.py

# Importar módulo JSON
import json
# Import WebsocketConsumer
de canais.genérico.websocket import WebsocketConsumer
# Importar módulo datetime
de datetime import datetime
# Importar módulo de suspensão
do tempo importar dormir
# Defina a classe de consumidor para enviar os dados por meio do WebsocketConsumer
classe ws_consumer (WebsocketConsumer):
def conectar (auto):
auto.aceitar()
enquanto (verdadeiro):
agora = datetime.agora()
auto.enviar (json.dumps ('timeValue': agora.strftime ("% H:% M:% S")))
dormir (1)

Crie o roteamento.py dentro de socketapp pasta com o seguinte script. O 'msg /'caminho é definido no script para chamar o consumidor para enviar os dados para o soquete.

roteamento.py

de django.caminho de importação de urls
a partir de .consumidores importam ws_consumer
# Defina o caminho para ligar para o consumidor
ws_urlpatterns = [
caminho ('msg /', ws_consumer.as_asgi ())
]

Modifique o Asgi.py arquivo com o seguinte script. Os módulos necessários para lidar com solicitações HTTP e WebSocket são importados no script.

Asgi.py

# Importar módulo de sistema operacional
importar os
# Importe get_asgi_application para lidar com o protocolo http
de django.testemunho.asgi import get_asgi_application
# Import ProtocolTypeRouter e URLRouter para definir o roteamento do websocket
de canais.importação de roteamento ProtocolTypeRouter, URLRouter
# Import AuthMiddlewareStack para lidar com websocket
de canais.auth import AuthMiddlewareStack
# Importar roteamento de websocket
de socketapp.routing import ws_urlpatterns
# Atribuir valor para DJANGO_SETTINGS_MODULE
os.ambiente.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.definições')
# Defina a variável do aplicativo para lidar com http e websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)

Agora, execute o seguinte URL no navegador novamente para ler os dados do WebSocket.

http: // localhost: 8000 / msg /

Se o consumidor e o roteador estiverem funcionando corretamente, o seguinte relógio digital será exibido no navegador. Aqui, o roteador enviou a solicitação WebSocket usando o 'msg /'caminho para o consumidor que aceitou a solicitação e enviou os dados para o modelo para mostrar o relógio digital no navegador onde o segundo valor da hora atual é atualizado a cada segundo.

Conclusão

Este tutorial mostrou como implementar um aplicativo em tempo real usando a estrutura e canais Django criando um relógio digital simples. Outros tipos de aplicativos em tempo real também podem ser implementados usando Django e canais, como sistemas de bate-papo online. Os scripts usados ​​neste tutorial funcionam para Django versões 3+ e Channel versões 3+ apenas. Portanto, se você estiver usando uma versão anterior do Django ou do Canal, será necessário atualizar a versão antes de testar o script fornecido neste tutorial.

Os 10 melhores jogos para jogar no Ubuntu
A plataforma Windows tem sido uma das plataformas dominantes para jogos devido à grande porcentagem de jogos que estão sendo desenvolvidos hoje para o...
5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...
Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...