因功能需要,要从一个后台响应是nodejs服务器的前端页面,发送POST请求至flask服务器,所以前端按钮响应使用了ajax跨域访问:
$('#yourbtnid').mousedown(function () {
$.post({url:"https://yoururl.com:yourport/your_route"}, {'sign': 'yoursign'})
})
但在按钮点击后,却F12看到 POST 500(但sign是可以正常在后台打印出来的)。
于是打印异常:
try:
# code
pass
except Exception as e:
print(e)
print(e.__traceback__.tb_frame.f_globals["__file__"]) # 发生异常所在的文件
print(e.__traceback__.tb_lineno) # 发生异常所在的行数
traceback.print_exc()
(以上参考了Python实现捕获异常发生的文件和具体行数-腾讯云开发者社区-腾讯云)
发现在app.route()的响应方法调用的另一个方法里出现了‘Request' object has no attribute 'sid'异常。
于是直接在响应方法中添加判断,以判断request对象中有无sid属性:
if hasattr(request, 'sid'):
# code
return_dict = {'return_code': '200', 'info':your_info}
return json.dumps(return_dict, ensure_ascii=False)
else:
# code
return_dict = {'return_code': '200', 'info':your_info}
return json.dumps(return_dict, ensure_ascii=False)
(以上参考了https://www.cnblogs.com/pengpengdeyuan/p/14206087.html)
随后,因flask后端响应中的异常被解决,POST 500也就不再出现了。