如何修复Flask Python中的“未找到此页面”?
我正在Flask中为API设置一个新服务器。以及一个服务器,用于在Flask中呈现前端。好的,所以当我请求确定API路由时,我得到一个奇怪的响应“这个页面没有找到”。我觉得一切都很好,我怎么能调试这个bug呢?另一件奇怪的事是它总是给我200 OK的状态。错误在路由中:@app.route'/v1.0/aluno/update/',methods=['POST'] API端如何修复Flask Python中的“未找到此页面”?,python,jquery,ajax,flask,werkzeug,Python,Jquery,Ajax,Flask,Werkzeug,我正在Flask中为API设置一个新服务器。以及一个服务器,用于在Flask中呈现前端。好的,所以当我请求确定API路由时,我得到一个奇怪的响应“这个页面没有找到”。我觉得一切都很好,我怎么能调试这个bug呢?另一件奇怪的事是它总是给我200 OK的状态。错误在路由中:@app.route'/v1.0/aluno/update/',methods=['POST'] API端 @app.route('/v1.0/aluno/<int:aluno_id>', methods=['GET
@app.route('/v1.0/aluno/<int:aluno_id>', methods=['GET'])
def aluno(aluno_id):
if request.method == 'GET':
cur = mysql.connection.cursor()
query = "SELECT NOME, NUMERO, PASSWORD FROM aluno WHERE NUMERO=%s"
cur.execute(query, (aluno_id,))
data = cur.fetchall()
if len(data) <= 0:
return Response(status=404)
else:
aluno = {
'nome': data[0][0],
'numero': data[0][1],
'password': data[0][2]
}
js = json.dumps(aluno)
resp = Response(js, status=200, mimetype='application/json')
resp.headers['Links'] = 'http://127.0.0.1/aluno'
return resp
@app.route('/v1.0/aluno/delete/<int:aluno_id>', methods=['POST'])
def aluno_delete(aluno_id):
if request.method == 'POST' and request.form['_method'] == 'delete':
query = "DELETE FROM aluno WHERE NUMERO = %s"
cur = mysql.connection.cursor()
cur.execute(query, (aluno_id,))
mysql.connection.commit()
cur.fetchall()
cur.close()
return Response(status=200)
@app.route('/v1.0/aluno/update/<int:aluno_id>', methods=['POST'])
def aluno_update(aluno_id):
form = AlunoForm(request.form)
if request.method == 'POST' and form.validate():
nome = request.form["nome"]
numero = request.form["numero"]
password = request.form["password"]
cur = mysql.connection.cursor()
query = "UPDATE aluno SET NOME=%s, NUMERO=%s, PASSWORD=%s WHERE NUMERO = %s"
cur.execute(query, (nome, numero, password, aluno_id))
mysql.connection.commit()
cur.execute(
"SELECT NOME, NUMERO FROM aluno WHERE NUMERO = %s", (aluno_id,))
data = cur.fetchall()
cur.close()
print(" * DATA ")
print(data)
aluno = {
'nome': data[0][0],
'numero': data[0][1]
}
js = json.dumps(aluno)
resp = Response(js, status=200, mimetype='application/json')
resp.headers['Links'] = 'http://127.0.0.1/aluno'
return resp
elif request.method == 'POST' and not form.validate():
resp = Response(status=400)
resp.headers['Links'] = 'http://127.0.0.1/aluno'
return resp
前端侧
{% endblock %}
<script type="text/javascript" src="{{url_for('static', filename='js/jquery-3.2.1.min.js') }}"></script>
<script type="text/javascript" src="{{url_for('static', filename = 'js/bootstrap.min.js')}}"></script>
<script>
function aluno_update(){
try{
let formElement = document.getElementById("aluno_update")
//let formData = formElement.
//console.log(formData)
$.ajax({
type: "POST",
url: "http://127.0.0.1:80/v1.0/aluno/update/{{aluno['numero']}}",
data: {'nome': 'João Luis','numero':'16172','password':'Password'},
//dataType: 'json',
success: function(data){
//location.href = "http://127.0.0.1:3000/v1.0/alunos/"
alert(data)
console.log(data)
},
error(jqXHR,JQueryXHR,errorThrown){
//console.log(formData)
alert(jqXHR)
alert(JQueryXHR)
alert(errorThrown)
console.log(jqXHR)
console.log(JQueryXHR)
console.log(errorThrown)
}
})
}catch(err){
alert(err)
}
}
</script>
我试着用邮递员代替普通的网络浏览器。向API发出请求。但我得到了同样的回答:“这个页面没有找到”
至少我期待着400个坏的请求或者类似的东西
表单验证失败,根据下面的代码得到400
elif request.method == 'POST' and not form.validate():
resp = Response(status=400)
resp.headers['Links'] = 'http://127.0.0.1/aluno'
return resp
我不知道我应该在所有代码中查找问题的位置。你至少有什么东西可以让我们继续吗?@roganjosh是的,我正在编辑我很抱歉…你的问题几乎肯定是这行:url:http://127.0.0.1:80/v1.0/aluno/update/{{aluno['numero']},:这不是javascript中字符串插值的工作方式,我怀疑您使用的服务器端模板引擎是否也在修复它。您将400-错误请求与404-找不到页面混合在一起。您得到的实际HTTP状态代码是什么?400还是404?@JaredSmith我猜是这样非常感谢。事情是。。。“我从来没有得到过400分,我总是得到200分,因为‘这个页面没有找到’@balderman