【发布时间】:2019-10-24 22:32:40
【问题描述】:
我想在 html 模板中按下一个按钮
<form action="{% url 'speech2text' %}" class="card-text" method="POST">
{% csrf_token %}
<button class="btn btn-primary btn-sm" type="submit">Start</button>
</form>
<p> Sie haben das folgende gesagt: </p>
<p> {{ speech_text }} </p>
按下按钮,将执行以下视图中的代码并将结果发送回模板:
def speech2textView(request):
if request.method == "POST":
r = sr.Recognizer()
with sr.Microphone() as source:
audio = r.listen(source)
text = r.recognize_google(audio, language="de-DE")
args = {'speech_text': text}
return render(request, 'speech2text.html', args)
这里有什么问题?非常感谢您的帮助。
【问题讨论】:
-
看起来您以某种方式使用非 POST 方法调用视图,在这种情况下,您的视图没有返回任何内容(因此实际上返回 None)。不过,您的表单看起来不错。
-
您应该使用
print()来检查request.method是否具有"POST"的值以及text是否从谷歌获得任何字符串。您还应该检查运行时是否没有任何错误。我假设您在本地计算机上运行 django,因为服务器上的 django 无权访问您的本地麦克风。 -
非常感谢您的支持。 POST 效果很好,当我在 python 中运行它时,文本是正确的。麦克风的好点。你有什么建议?我需要通过前端捕捉声音吗?