Flask GET and POST request: APIS


这是我第一次使用返回结果的api。因此,我使用一个帖子请求以一种形式从用户那里获取信息:
<form action="{{url_for('international.get_grade_data')}}"  method="POST">
........
</form>

端点看起来像这样:

@international.route("/grade_data", methods=["GET", "POST"])    
@tfa_login_required    
def get_grade_data():
if request.method == "POST":
grading_system_from= request.form.get('country_from')
grading_system_to = request.form.get('country_to')
users_grade= request.form.get('user_grade')
grade_request= {"free_grade": users_grade, "country_to": grading_system_to, "country_from": grading_system_from} 
grade= grade_comparison_tool(grade_request)
return jsonify(
grade_request = grade
)

这些数据被发送到一个api,然后以JSON形式返回结果。

但是当用户点击提交按钮时,用户会被重定向到json结果。

我想在URL中获得结果,然后在网页上显示结果,而不重定向到json结果。我该如何做到这一点?我已经上网了解了POST和GET,但还不清楚。

关于这个问题,我已经能够通过改变策略找到解决方案,首先,我阻止了表单的默认操作:

<form action="#" onsubmit="return false"  method="POST">
........
</form>

其次,在JS文件中,我使用AJAX调用从表单发送数据,并在点击事件中收到结果:

function dataLoading(){
let datasetDict = {
"free_grade": free_grade.value,
"country_from": countryFrom.value,
"country_to": countryTo.value
}
$.ajax({
type: "POST",
url: '/international/grade_data',
data: JSON.stringify(datasetDict),
success: function(data_result, status){
console.log( JSON.stringify(data_result) + ': ' + status)
},
contentType: 'application/json;charset=UTF-8',
dataType: 'json' 
});
}
document.getElementById('convert-button').addEventListener('click', dataLoading)

修改了flask python代码:

@international.route("/grade_data", methods=["POST"])    
@tfa_login_required    
def get_grade_data():
if request.method == "POST":
user_grade_data =request.get_json()
grade = grade_analy(user_grade_data)
return jsonify(grade)

最新更新