Python Flask框架实现传数据到JS的方法分析

许南星
许南星
发布时间:2026-10-13 | 6人浏览过
原创

本文详解了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程序设计有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表