我想使用javascript运行python脚本。
我安装了Flask。
这是我的HTML代码:
<input type="button" value="tester" onclick="addImage()" />
<p id="result"></p>
<script>
function callPy(data1, data2){
$.ajax({
type: "POST",
url:"/test",
data:{data1: data1, data2:data2},
success:callbackFunc
});
function callbackFunc(response) {
$('#result').html('<li>'+response.x+'</li>');
}
function addImage(){
callPy(1,2);
}
</script>
这是我的python代码:
import csv
from numpy import genfromtxt
from numpy import matrix
from flask import Flask, render_template, redirect, url_for,request
from flask import make_response
app = Flask(__name__)
@app.route('/test', method='POST')
def test():
if request.method == 'POST'
data1 = request.form['data1']
data2 = request.form['data2']
return "ok""
return render_template('watermark.html', message='azerty')
if __name__ == "__main__":
app.run(debug = True)
但我在控制台中出现此错误:jquery.min.js:5 POST http://testFalsk/test 404 (Not Found)
我要做什么?
答案 0 :(得分:0)
首先,允许方法的参数名称是methods
(不是method
),它接受带有允许方法的列表。在这种情况下,它只有一个元素。
@app.route('/test', methods=['POST'])
有了这个,一旦这个视图只接受这种类型的请求,就不需要检查request.method == 'POST'
。
接下来,代码中存在一些语法错误:if
语句后面的冒号和“ok”返回字符串(三个双引号)。此外,您有两个返回,这是无效的。要获取dict数据(如request.form
中所述),建议使用get
方法。如果密钥不存在,它将返回None
,与当前引发异常的方式相反。
修正后的方法如下:
@app.route('/test', methods=['POST'])
def test():
data1 = request.form.get('data1')
data2 = request.form.get('data2')
return render_template('watermark.html', message='azerty')
如果您仍然遇到问题或我的回答不明确也不准确,请告诉我。
希望它有所帮助。
干杯