【发布时间】:2021-11-13 05:45:44
【问题描述】:
在 render.html 文件中,我有一个按钮,可以调用 render.js 中的函数(我在脚本中包含了 render.js 作为 src)
<button type="button" onclick="someFunc()">Calculate</button>
在 render.js 中 someFunc() 发出请求
options = {
method: "POST",
headers: {
"Content-Type" : "application/json"
},
body: JSON.stringify(feat1dataObj)
}
const test1 = await fetch('http://localhost:5000/analyzeInput', options)
app.py 是应该处理请求的后端
from flask import Flask, jsonify, request
app = Flask(__name__);
@app.route('/analyzeInput', methods = ['POST'] )
def analyzeData(res):
part1Len = request.json['part1Len']
print(part1Len);
res = jsonify( {"Testing":"1"} )
res.headers.add('Access-Control-Allow-Origin', '*')
res.headers.set('Access-Control-Allow-Methods', 'GET, POST')
return res;
#start server
if __name__ == "__main__":
app.run(debug=True);
但我得到 405 ""Method Not Allowed The method is not allowed for the requested URL";典型的解决方案是 method = ["POST"] 不包括在内,但我有。
好像我正在以某种方式发出 GET 请求?
总的来说,我是用 ElectronJS 做一个 GUI,只是想把数据从 GUI 传递到 Python 脚本来处理,不知道为什么教程推荐托管;似乎应该有一种更简单的方法来做到这一点。
编辑:
@app.route('/analyzeInput', methods = ['GET', 'POST', 'OPTIONS'] )
#def analyzeData(res):
#def analyzeData(request):
def analyzeData():
if request.method == 'POST':
print("entered analyzeInput")
#part1Len = request.json['part1Len']
#print(part1Len);
res = jsonify( {"Testing":"1"} )
res.headers.add('Access-Control-Allow-Origin', '*')
#res.headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
res.headers.add('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
return res;
代码目前看起来像这样(我将analyzeData 更改为analyzeInput;并在各处进行了更改,因此我不必担心那部分)。获取“'analyzeData' 的视图函数未返回有效响应。该函数返回 None 或在没有返回语句的情况下结束”作为内部服务器错误。
再次,很确定问题在于请求是作为“GET”而不是“POST”发送的,但找不到对此的解释。 New output
【问题讨论】:
标签: javascript python flask electron localhost