gpt4 book ai didi

python - 在 Python/Flask for d3.js 中异步加载数据

转载 作者:太空狗 更新时间:2023-10-30 00:17:25 26 4
gpt4 key购买 nike

我有一个 python/flask 应用程序。在其中我有一个页面查询数据库很多,以便在页面上显示数据。但是,如果我在 @app.route() 所在的 view.py 中包含此逻辑,则加载页面的时间太长。然后我用 d3 显示这些数据。

我当前的设置是,我有一个独立于计算数据的 View 的路径(假设“/data”是路径)。当你转到那个路径时,它以 json 格式返回数据并由

加载
d3.json("/data", callback)

这很好用。我的问题是我需要完成许多不同的查询,并且每个数据集的不同路径使我的应用程序变得困惑并且似乎没有遵循 DRY 原则。有一个更好的方法吗?我也很难将变量传递给从 python 运行 d3 的 javascript。

最佳答案

您真正需要的是一个用于访问数据的 API。如果您已经在使用 flask ,那么 Flask-Restful是一个很好的选择。您可以像这样设置路线:

from flask import Flask
from flask_restful import Resource, Api, reqparse

app = Flask(__name__)
api = Api(app)

class Data(Resource):
def __init__(self):
self.parser = reqparse.RequestParser()
self.parser.add_argument('name', type=str, required = True)
self.parser.add_argument('whatever', type=str, required = True)
def post(self):
args = self.parser.parse_args()
#query your database here and do your stuff
print(args['name'])
print(args['whatever'])
return {'data': 'your data here',
'other_information': 'more_stuff' }
api.add_resource(Data, '/data')

if __name__ == '__main__':
app.run(debug=True)

然后您将能够使用 JSON、查询字符串或表单传递指定需要哪些数据的变量。 Flask-Restful 非常聪明,会找出您用来自动发送它的方法。然后你可以返回一个将使用 JSON 编码的字典。这应该可以解决将多个变量传回 javascript 的第二个问题。

相应的 javascript 示例如下:

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://127.0.0.1:5000/data");
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.onload = function() {
var dict = JSON.parse(xhr.responseText);
console.log(dict['data']);
console.log(dict['other_information']);
};

var request = JSON.stringify({'name':'my_name', 'whatever':'stuff'});
xhr.send(request);

关于python - 在 Python/Flask for d3.js 中异步加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23811299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com