Django 中的 Highcharts:在网页上显示 JSON 数据而不是图表
P粉310931198
P粉310931198 2024-04-02 10:06:09
[JavaScript讨论组]

因此,我尝试使用 Django 中的 Highcharts 制作烛台图,但无法在网页上显示图表,而是显示所获取数据的 JSON 列表。

我正在使用 iexcloud 的 API 来获取历史数据

这是我的逻辑: 视图.py 文件:

def candlestick_chart_data(request):
    api_key = 'my_api_key'
    stock_data = get_historical_data(
        "AAPL", start="2023-01-01", end="2023-05-05", output_format="pandas", token=api_key)
    stock_data_array = [{
        'x': date.isoformat(),
        'open': row['open'],
        'high': row['high'],
        'low': row['low'],
        'close': row['close']
    } for date, row in stock_data.iterrows()]
    return JsonResponse(stock_data_array, safe=False)

我的模板,即candlestick_chart.html

{% extends 'base.html' %}

{% block content %}

{% block home_css %}
    
    
    
    
    
{% endblock %}

{% endblock %}

以及我的 url 路径(如果需要):

path('candlestick-chart-data/', views.candlestick_chart_data, name='candlestick-chart'),

这是我在网页上得到的输出 本地主机网页图像

我尝试将 console.log 语句放入代码中,尝试在终端中打印数据,一切正常,但我无法理解为什么如果一切正常,图表不会出现在网页中

P粉310931198
P粉310931198

全部回复(1)
P粉420958692

我会赞同 @kikon 的建议 - 这将有助于 a) 查看正在生成的 localhost 页面的实际源代码,b) 查看控制台输出以查看是否抛出任何 JS 错误。如果没有看到这些,恐怕我无法在这里提供太多帮助。

但是,可能相关的一件事是,您当前正在 HTML <body> 中加载 <script/> 标记。

这有点反模式,因为这意味着您的 Highcharts 构造函数 (Highcharts.stockChart()) 可能会在相关 Highcharts 模块有机会加载之前执行,这将在控制台中抛出 ReferenceError

更好的模式是在 <head/> 块中包含 <script/> 标签,并使用 defer 属性,然后在 DOM 相关事件上触发 Highcharts 构造函数,例如 DOMContentLoaded 或类似的(确切的事件可能取决于您的具体用例/流程)。

完成相同任务的另一种模式是使用重试的异步函数(捕获相关的 ReferenceError),直到加载脚本。

当然,这些只是猜测 - 如果不查看 HTML 输出和控制台输出,很难准确确定这里发生了什么。

顺便说一句,如果您尝试将 Highcharts 集成到 Django 中,您可能还需要查看 Highcharts for Python 工具包刚刚作为 Highcharts 的付费插件发布(完全公开,我是 Highcharts for Python 工具包的创建者),它可以简化您的一些 Django 视图集成。 p>

同时,我希望这个答案可以帮助您诊断/解决问题,如果您分享更多详细信息,我很乐意通过更准确的诊断/建议来修改这个答案。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号