使用Flask使用javascript运行python脚本

时间:2016-08-10 13:43:34

标签: javascript python html flask

我想使用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) 我要做什么?

1 个答案:

答案 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')

如果您仍然遇到问题或我的回答不明确也不准确,请告诉我。

希望它有所帮助。
干杯