【问题标题】:Flask: How can I send a text from python to a HTML textAreaFlask:如何将文本从 python 发送到 HTML textArea
【发布时间】:2021-11-12 02:40:57
【问题描述】:

我刚开始学习如何在 python 中使用烧瓶,我正在做一些练习以从我的前端获取信息,对其进行分析,然后将结果发送回 TxtArea 中的前端。我能够从第一个 txtArea 获取信息并对其进行分析,但我不确定如何将分析输出发送回前端。

基本上,由于左侧 txtArea 的输入,我应该在右侧 txtArea 中显示“Hello world”。

这是我的代码。

@app.route('/analisis',methods=["POST","GET"])

def analisis():
    if request.method=="POST":
        content=request.form["text1"]
        result=analysis(content)
        return redirect(url_for("analisis"))
    else:
        return render_template('analisis.html')```


这就是我得到的 html 文件:

<!DOCTYPE html>
<html>
<head>
<style>
textarea {
  width: 400px;
  height: 400px;
}
</style>
</head>
<body>

<form action="#"  method="post">
  <h1>Input</h1>

<p><input type="submit" value="Analizar"/></p>

<textarea id="txt1" name="text1" rows="4" cols="50">

  </textarea>

  <textarea id="txt2" name="text2" rows="4" cols="50">

  </textarea>

</form>


</body>
</html>

有什么想法吗?

【问题讨论】:

  • 你确定这条线是正确的吗? result=analysis(content) ?
  • 还有你在击中 Analizar 时会得到什么?
  • 您所要求的不仅仅是打印“Hello World”更复杂。在这里,您在左侧窗口中传递了一个字符串,如果 print 是一个函数,则无法解释该字符串。简而言之,如果您要发布数据并且想要正确获取该数据,请执行以下操作:return render_template("hello.html", content=content) 并在 html 中:&lt;textarea id="txt2" name="text2" rows="4" cols="50"&gt; {{ content }} &lt;/textarea&gt;
  • @RajVerma,我正在做的是解释器,所以“Analizar”的输出应该是“Hello world”

标签: python html flask frontend


【解决方案1】:

您需要从textarea 传递您的数据,对其进行处理并将两个值都返回到html

以下是示例路线

@app.route('/sample', methods=["POST", "GET"])
def sample():
    if request.method == 'POST':
        sample_input = request.form.get('text1')
        sample_output = sample_input + ' -> Processed'
        return render_template('index.html', sample_input=sample_input, sample_output=sample_output)
    elif request.method == 'GET':
        return render_template('index.html')

示例 html 模板

<!DOCTYPE html>
<html>
<head>
    <style>
textarea {
  width: 400px;
  height: 400px;
}

    </style>
</head>
<body>

<form action="/sample" method="post">
    <h1>Input</h1>

    <p><input type="submit" value="Analizar"/></p>

    <textarea id="txt1" name="text1" rows="4" cols="50">
        {{ sample_input }}
  </textarea>
    <textarea id="txt2" name="text2" rows="4" cols="50">
        {{ sample_output }}
  </textarea>

</form>


</body>
</html>

当有POST请求时,它会用适当的值更新textarea,当它是GET请求时,它会给出一个空白textarea

【讨论】:

  • 能否请您帮助我了解这是如何在我测试它时只给您“Hello World”的,它仍然给我print("helloworld") -&gt; Processed 用于输入print("helloworld") 。提前致谢。 @DanielLópez
  • @RajVerma 当然!我根据我的代码调整了您的解决方案,正如您在上面看到的,我的代码中有这个result=analysis(content),我构建了一个编译器,所以无论输入是什么,它都会返回一个输出,因为我已经创建了编程语言。然后result 将以我的编程语言显示输出应该是什么。您可以在这里试用:danielle500.herokuapp.comAnalisis 选项卡上。
  • @DanielLópez 啊,我明白了,您已经在“分析”功能中完成了编译器编码。
  • @RajVerma 根据我对问题的理解,这不是解析print('helloworl') 而是关于将数据发送到模板。我假设analysis(content) 将负责解析,我的示例代码只设置输入和输出文本。用 analysis 的值替换 sample_output 将在相应的文本区域中显示它
【解决方案2】:
content=request.form["text1"]
result=analysis(content) #I assume you have a function that analyzes this parameter
url_for('remove', variable=result)

然后在 HTML 中

{{ variable }}

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2020-08-09
    • 2021-12-27
    • 2019-02-08
    • 2021-01-09
    • 2012-07-18
    相关资源
    最近更新 更多