首页 > 解决方案 > 如何从 html 脚本标签中获取数据到我的 python 函数中?

问题描述

我正在尝试将我存储在我的 html 文件中的脚本标记内的数据获取到我的 python 文件中,以便我可以在 python 函数中使用它,有谁知道我该如何实现这一点?这是我的html代码:

<textarea id="rendezook" class="rendezook"></textarea>
<button onclick="get_text();">Valider</button>
<script>
    function get_text() {
        var x = document.getElementById("rendezook")
        location.href = "/validate_comment?rendezook=" + encodeURIComponent(x.value);
        console.log(x.value)
    }
</script>

然后这是我的python文件:

@app.route('/validate_comment')
def validate_comment(item_id=None):
    print("test")
    print(request.args.get("rendezook"))
    print("test2")
    return redirect(url_for('msr_edit', item_id=72))

test 和 test2 没有被打印,所以它没有进入函数。

标签: pythonhtml

解决方案


最简单的方法是使用通过 GET 请求提交的表单:

<form action="/validate_comment">
  <textarea name="rendezook" class="rendezook"></textarea>
  <button type="submit">Valider</button>
</form>

这将产生一个类似的 URL /validate_comment?rendezook=some_value_here,因此您可以通过request.args以下方式访问它(看起来您正在使用 Flask):

@app.route('/validate_comment')
def validate_comment():
    print("yeet", request.args.get("rendezook"))
    return redirect(url_for('msr_edit', item_id=72))

根据评论,如果您由于某种原因无法使用表格,那么:

<textarea id="rendezook" class="rendezook"></textarea>
<button onclick="test()">Valider</button>
<script>
function test() {
    var x = document.getElementById("rendezook");
    location.href = "/validate_comment?rendezook=" + encodeURIComponent(x.value);
}
</script>

编辑 2

这是一个可证明有效的最小示例:)

from flask import request, Flask

app = Flask(__name__)


@app.route("/validate_comment")
def validate_comment(item_id=None):
    x = request.args.get("rendezook")
    return f"you said {x}"


@app.route("/")
def index():
    return """
<textarea id="rendezook" class="rendezook"></textarea>
<button onclick="get_text();">Valider</button>
<script>
    function get_text() {
        var x = document.getElementById("rendezook")
        location.href = "/validate_comment?rendezook=" + encodeURIComponent(x.value);
        console.log(x.value)
    }
</script>
"""


if __name__ == "__main__":
    app.run()

推荐阅读