这是js中的代码<script> async function suan() { try { while (true) { let response = await fetch('http://127.0.0.1/suanfa', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ 'user_name': '{{user_name}}' }) }); let data = await response.json(); document.getElementById('myth').innerHTML = data.result; } } catch (error) { console.error(error); } } </script>接着是python中的代码@app.route('/suanfa', methods=['POST','GET']) def suanfa(): print("28389") global conn data = request.get_json() a = data['user_name'] print(a) conn.sendall("begin".encode()) time.sleep(0.5) result = suanfa.main(a) return jsonify({'result': result}) app.run(host='127.0.0.1', port=5000, debug=True) # Flask类的run方法在本地服务器上运行应用程序,没有该方法,上面代码中的路由装饰器不会被执行即绑定的地址不会被注册 # app.run(host, port, debug, options)。运行时总有如下错误127.0.0.1 - - [09/May/2023 22:39:31] "POST /127.0.0.1/suanfa HTTP/1.1" 404 -。请问是什么原因?如何修改
时间: 2023-06-14 16:04:18 浏览: 82
这个错误提示说明了 Flask 框架没有找到请求的路由。在 Python 中,路由是通过装饰器来实现的。在你的代码中,路由装饰器应该是正确的,但是你的请求URL是不正确的。
JavaScript 代码中的 fetch 方法使用了相对路径 "http://127.0.0.1/suanfa" 来请求数据,但是 Python 中的路由装饰器中没有指定该路径。因此,Flask 框架无法找到该路由。
为了解决这个问题,你需要在 Python 的路由装饰器中指定请求的路径,即 "/suanfa"。修改后的代码如下:
```python
@app.route('/suanfa', methods=['POST'])
def suanfa():
print("28389")
global conn
data = request.get_json()
a = data['user_name']
print(a)
conn.sendall("begin".encode())
time.sleep(0.5)
result = suanfa.main(a)
return jsonify({'result': result})
```
同时,你需要在 JavaScript 代码中修改请求的 URL:
```javascript
let response = await fetch('/suanfa', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
'user_name': '{{user_name}}'
})
});
```
这样就可以正确地发送请求并得到响应了。
阅读全文