Как отправить данные из custom.py на html - Django - PullRequest
0 голосов
/ 21 июня 2020

Концепция, которую я пытаюсь реализовать:

Веб-приложение с включенной речью, которое отображает то, что говорит пользователь, в пользовательском интерфейсе. Пример: Если пользователь говорит «Привет!», «Привет!» должен отображаться в пользовательском интерфейсе.

Что у меня есть:

Файлы, которые у меня есть в моем приложении:

  • speech.py (имеет переменную (displayOnUI), в котором хранится то, что говорит пользователь)
  • speech.html (где я хочу отобразить то, что говорит пользователь)

Примечание: speech.py постоянно слушает пользователя и сохраняет сохранение того, что говорит пользователь, в переменной (displayOnUI).

Что я пробовал:

Я попытался передать значение переменной displayOnUI, которая находится в speech.py, в view.py а затем передать его в speech.html, используя context.

speech.py ​​

displayOnUI= "Please say something.."

def SpeechRecognition():
    while 1:
        try:
            with sr.Microphone() as source:
                r.adjust_for_ambient_noise(source, duration=1)
                audioReceived = r.record(source, duration=3)
                displayOnUI= r.recognize_google(audioReceived)

view.py

from SpeechApp.speech import displayOnUI

def speech(request):
    data = displayOnUI
    return render(request, "speech.html", {"data": data})

Speech. html

<div>
   <h3>This is what I heard: {{data}} <h3/>
</div>

Проблема, с которой я столкнулся

Я могу отобразить начальное значение, которое присутствует в displayOnUI (то есть «Пожалуйста, скажите что-нибудь ...») в пользовательском интерфейсе, однако я не могу отобразить обновленное значение (команду пользователя) displayUI в speech.html. (Думаю, это потому, что view.py выполняется только один раз. Не уверен).

Как подойти к этой проблеме? Спасибо.

1 Ответ

0 голосов
/ 21 июня 2020

Итак, сеть и HTTP работают так, что вы, клиент, получаете ответ только в том случае, если сначала делаете запрос к серверу, в данном случае к приложению django. Итак, если вы обновляете переменную на сервере, клиент, ie. пользователь, обращающийся к сайту через браузер, не узнает об этом, пока не сделает новый запрос к серверу. Это может быть сделано, например, с помощью javascript с использованием опроса, когда у вас есть сценарий, запущенный на клиенте, который время от времени извлекает необходимую информацию.

Однако здесь есть еще одна проблема, а именно: код, который слушает микрофон, запущен на сервере. Если сервер и клиент находятся на одном компьютере, вы не увидите разницы, но если они разные, что произойдет, если вы где-то развернете службу, у нее не будет доступа к микрофону клиента. Выяснить, как решить эту проблему, - совсем другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...