Я изучаю Django и работаю на веб-странице, где мне нужно предложить пользователю возможность войти во внешний сервис. Я не могу просто использовать традиционную систему представлений Django, потому что в противном случае я бы потерял связь с простым обновлением. По этой причине я подумал об использовании Django Channels .
Моя проблема сейчас в том, как отправить данные в класс потребителей? Используя consumers.py
, указанный в учебнике , я хотел бы отправить данные из отправки формы в функцию connect
, а затем установить соединение, если вход во внешнюю службу в порядке. Затем в этом сценарии я мог бы использовать экземпляр client
и методы из этих внешних служб.
Итак, вкратце, возможно ли отправить данные формы потребителю? И будет ли это нормально с точки зрения безопасности в случае конфиденциальных данных?
from channels.generic.websocket import AsyncWebsocketConsumer
import json
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
######
## login to external service
######
#get login data from form submited when the websockted is initiated
username = ...
pass = ...
self.client = Client(username, password)
if client:
await self.accept()
# Receive message from room group
async def chat_message(self, event):
message = event['message']
self.client.send(event['message'])
Обновление:
To clear the explanation: I can't save the user username and pass of the external service, and that I want to offer the user the possibility to use this [sms service](https://clxcommunications.github.io/sdk-xms-python/tutorial.html) with a text field and phone number.
Так что проблема в том, что даже если я создам форму, а также имя пользователя и пароль для входа (в виде) с
client = clx.xms.Client('myserviceplan', 'mytoken')
тогда в следующем запросе я потеряю экземпляр client
. Вот почему я подумал о Django Channels
. Но я не совсем уверен, что это лучшее решение ...