我有一个网页,用户可以在其中输入数据。我正在尝试将输入的数据传递给python脚本,对其进行处理并获取响应。我正在运行XAMPP服务器,并根据this答案修改了httpd.conf文件。
前端:
routes.MapLocalizedRoute("AddProduct-Catalog",
"addproduct/catalog/{productId}/{shoppingTypeId}/{quantity}",
new { controller = "Shopping", action = "AddProduct_Catalog"},
new { productId = @"\d+", shoppingTypeId = @"\d+", quantity=@"\d+" },
new[] { "BBC.Web.Controllers" });
Python:
<script>
let reviewtext;
$("#reviewbox").change(function () {
reviewtext = $('#reviewbox').val();
});
$("#submit").click(function (event) {
let message = {
review: reviewtext
}
$.ajax({
type: "POST",
url: "http://127.0.0.1:80/first.py",
data: JSON.stringify(message),
success: function (response) {
alert("Success");
},
error: function (data) {
alert("Fail");
},
});
});
</script>
运行网页时,没有任何回应。发布请求未执行。
甚至有可能这样做吗?
我是否必须使用Flask重新创建整个网站才能起作用?
答案 0 :(得分:0)
在尝试this example之前,您应该了解一些事情。
首先,下面的终结点无效,因为您没有公开需要访问的python文件,而是HTTP终结点。
url: "http://127.0.0.1:80/first.py",
您应该公开预测资源,并使用HTTP动词更改其状态:
# Do prediction analysis
@app.route('/predict', methods=['POST'])
def predict():
result = store_predict_data(request.data)
response = {
'id': result.id,
'status' : result
}
return jsonify(response)
# get predict analysis result
@app.route('/predict/{id}', methods=['GET'])
def post_predictable_data():
...
如上所示,Flask使用werkzeug程序包,并且在此程序包中,有一个request object属性具有data属性,可让您获取从javascript发送的有效负载
当您使用Web应用程序框架时,最终将拥有一个通过HTTP进行通信的应用程序,并且应在所有网络通信中设置端口(默认情况下,在Flask上为5000),您可以{{3 }},但请确保您是唯一使用它的人。
您可以运行烧瓶服务器,仅出于开发目的:
FLASK_APP=flask_webserver.py flask run --port 8080
* Serving Flask app "flask_webserver.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
然后,当您curl
时,会得到结果:
curl -d 'forking' -X POST localhost:8080
Hello, forking World!
这是重现上面示例的代码
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods=['POST','GET'])
def hello_world():
return 'Hello, %s World!' % request.data.decode('UTF-8')
有关XAMPP的更新
由于您是从XAMPP运行,因此请尝试将下面的行放在文件末尾。
if __name__ == '__main__':
app.run()
详细了解change it to 80