我已经全神贯注地寻找解决方案,但我只能找到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) {}
});
但老实说我不懂阿贾克斯。特别是"成功"那个电话的一部分。当我运行jQuery时,我得到错误,这可能是有道理的,因为我还没有完成服务器的一半?
我只是非常困惑,如果有人可以在演唱会上解释这两半,我会很高兴。
答案 0 :(得分:1)
您需要的是在javascript和后端python服务器中创建前端客户端。这是Web开发中非常基本的东西。
我为您创建了应用程序的两个方面。请记住,这是非常基本的。
首先,您将使用名为Flask的python框架。你必须安装它,如下所示:
> pip install flask
之后,创建一个名为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
,然后您可以在浏览器中转到http://localhost:5000
。
root将加载index.html
。当您发送文本时,您将使用/script
端点。在那里,您可以插入脚本代码。应该以该方法返回响应。
成功和错误函数是回调。当服务器发回响应时,将触发这些功能。如果服务器返回HTTP状态2xx,则将调用 success 函数;否则错误。
我强烈建议您详细了解ajax和callbacks。您可以在Flask site too上了解详情。