【问题标题】:Passing it a string, and running a python script from an html page将字符串传递给它,然后从 html 页面运行 python 脚本
【发布时间】:2017-04-03 21:30:31
【问题描述】:

我已经到处寻找解决方案,但我只找到了 python 一半或 javascript 一半,我需要两者。

我有一个在命令行中运行的 python 脚本,如下所示:

$ python3 myscript.py inputString

我希望能够让用户在网页上填写一个文本框,点击一个按钮,然后运行 ​​python 脚本,给定文本框中的字符串。

有人告诉我将 python 作为 WGSI 服务器运行,其他人告诉我使用 ajax,例如:

$.ajax({
    url: "/path/to/my/script.py",
    data: "document.getElementById('textinputID').value,
    success: function(response) {}
});

但老实说,我不懂 ajax。特别是那个电话的“成功”部分。当我只运行那个 jQuery 时,我得到了错误,这可能是有道理的,因为我还没有完成服务器的一半?

我只是很困惑,如果有人能同时解释这两个部分,我会很高兴的。

【问题讨论】:

    标签: javascript jquery python html ajax


    【解决方案1】:

    您需要在 javascript 中创建一个前端客户端和一个后端 python 服务器。这是 Web 开发中非常基本的东西。

    我已经为您创建了应用程序的两面。请记住,这是非常基本的。

    首先,您将使用一个名为Flask 的python 框架。你必须像这样安装它:

    > pip 安装烧瓶

    之后,创建一个名为server.py的文件

    from flask import Flask, request, render_template
    app = Flask(__name__)
    
    @app.route("/script", methods=['POST'])
    def script():
        input_string = request.form['data']
    
        """
        Your script code here
        """
    
        return "backend response"
    
    @app.route('/')
    def static_page():
        return render_template('index.html')
    
    if __name__ == "__main__":
        app.run()
    

    input_string 是保存输入字符串的变量。

    然后,创建一个名为 template 的文件夹,并在其中添加一个名为 index.html 的文件

    <html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <title>Test</title>
    </head>
        <body>
            <input id="textinputID" type="text" name="textinput">
            <script type="text/javascript">
                function sendMessage() {
                    $.ajax({
                        method: 'POST',
                        url: "http://localhost:5000/script",
                        data: {'data': document.getElementById('textinputID').value},
                        success: function(response) {
                            console.log(response)
                        },
                        error: function(response) {
                            console.error(response)
                        }
                    });
                }
            </script>
            <button onclick="sendMessage()">Send</button>
        </body>
    </html>
    

    现在您可以运行python server.py,然后您可以在浏览器中转到@987654322@

    根将加载index.html。当您发送文本时,您将使用/script 端点。在那里你可以插入你的脚本代码。应该在该方法中返回响应。

    successerror 函数是回调函数。当服务器发回响应时,这些函数将触发。如果服务器返回 HTTP 状态 2xx,将调用 success 函数; 错误否则。

    我强烈建议您阅读有关ajaxcallbacks 的更多信息。您可以在 Flask site too 上阅读更多相关信息。

    【讨论】:

    • 非常感谢!这正是我正在寻找的。我也非常感谢您解释所有内容并添加后续链接,以便我进行一些研究。我很难理解只看到一侧,但现在我可以看到两者,它就更清晰了。
    猜你喜欢
    • 2021-09-22
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多