Python Flask框架实现传数据到JS的方法分析
本文详解了Python Flask框架中后端向前端JavaScript传递数据的两种主要方式。重点分析了使用json.dumps和jsonify进行后台序列化的区别,以及前端通过jQuery的$.getJSON、$.post或eval方法进行反序列化的具体实现。此外,还介绍了在渲染模板时通过|safe过滤器直接传递JSON字符串的技巧,旨在帮助开发者优化Flask应用中的数据交互流程。
Flask与JavaScript数据交互概述
本文详细介绍在Python Flask框架中,后端如何将数据传递给前端JavaScript的实现方法,供开发者参考。
数据格式选择与后端序列化
首先需要明确后台与前端交互所采用的数据格式标准。
通常推荐使用JSON格式,因为它与JavaScript的数据结构天然契合,交互效率更高。
后端返回的数据必须经过序列化处理后才能传输。
在/homepageRecommend路由对应的view方法中,需返回经过序列化的数据。
dict = {"a":1, "b":2}<br data-filtered="filtered">
import json
json.dumps(dict)
2)
from flask import jsonify
jsonify(dict) #在调用jsonfiy 有时会报错,原因是jsonify 对象必须是dict
这两种序列化方式的主要区别在于,jsonify返回的数据格式在浏览器中查看时更加美观易读。
前端jQuery反序列化与请求处理
前端利用jQuery对接收到的JSON数据进行反序列化操作。
$.getJSON('/homepageRecommend'
, function(data) { // 从Flask返回的数据
alert(data.a) // 浏览器弹窗显示 后端返回的dict["a"]的值,此次是1
}
)
//getJSON 函数有三个参数
//第一个是后端返回的数据的url
//第二个是要返回给服务器的data 是可选的
//第三个是对获取的反序列化数据 要继续进行的操作的函数
前端通过.get()或者.get()或者.post()方法发送请求,后端利用json.dumps(dict)返回json数据,在js中利用eval()方法,把json数据转换为js对象,后再做其他处理
$.post("{{ url_for('statistics.HomeRecommend') }}",{"id":a},function(reco_list){
var reco_list = eval(reco_list)
//do others
})
模板渲染时的直接数据传递技巧
最近在使用icharts绘制图表的过程中,发现了一种额外的数据传输方式,在view中使用如下代码:
代码如下:
return render_template('statistics/numberofuserlogin/login_number.html', result_json = json.dumps(result))
js中直接用
js_object = eval('{{result_json|safe }}')注意 一定要加|safe 过滤否则会对字符串进行转义导致解析错误 使用这种方式传数据,能够在渲染模板的同时传数据,避免定义新的url拿数据
总结: flask 后台给前端js传数据, 需要注意序列化 和反序列化
更多资料参考 https://www.jb51.net/article/162815.htm
希望本文所述对大家基于Flask框架的Python程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









