0

我想用 Django 建立一个股票网站,我找到了一个 Javascript 库(tickp)来制作图表,但我不懂 Javascript,也不知道如何读取 Django 模板中的 json 数据。我使用此代码从 Yahoo Finance 检索股票数据。

我将这些 .py 和 .js 放在我的文件夹中,我的观点是这样的:

from stock.stockretriever import StockRetriever

def stockretriever(request,number):
    data = StockRetriever().get_historical_info('YHOO')
    return HttpResponse(simplejson.dumps(data),mimetype='application/json')

但是我不知道我应该如何编写模板,有人可以告诉我吗?

谢谢。

4

2 回答 2

1

我没有安装这些库,但根据库的自述文件,tickp您需要以下数据:[date, open, high, low, close and optionally volume]. 该get_historical_info函数返回列[Date, Open, High, Low, Close, Volume, AdjClose]。这里的不匹配是AdjClose,所以你需要从你得到的数据中去掉它StockRetriever

from django.shortcuts import render
from stock.stockretriever import StockRetriever

def stockretriever(request, number):
    data = StockRetriever().get_historical_info('YHOO')
    # Assuming data is returned as a list of lists
    new_data = [d[:-1] for d in data]
    return render(request, 'stock.html', { 'data': simplejson.dumps(new_data) })

按照自述文件,您需要在模板中包含以下内容:

<html>
<head><script src="tickp.js"></script><script src="stats.js"></script></head>
<body onload='plot = window.tickp("#chart"); plot.read({{ data }}); plot.plot();'>
  <div id="chart"></div>
</body>
</html>

请注意,在可能的 Ajax 调用或正确的格式和使用方面,我已经走了一些捷径,但它应该为您提供一些入门知识。当您遗漏某些内容时,请用您遇到的具体问题更新您的问题。

于 2011-11-28T14:34:22.670 回答
1

你有两个选择:

  1. 呈现包含数据的模板
  2. 从服务器动态获取数据

如果你选择 1. 你可以在你的模板中添加这样的东西:

<script type="text/javascript">
   var my_data = {{ json_plot_data }};
</script>

该模板还包括从数据生成图的 javascript 代码。视图函数将包括数据获取并返回一个上下文对象,如下所示:

def my_stock_plot_view(request, number):
    # get stock data
    json_data = simplejson.dumps(data)
    django.shortcuts.render(request, 'template.html', {'json_plot_data':json_data})

如果您选择 2. 您将需要使用 jQuery.ajax 之类的东西来使用 ajax 请求动态加载 json 数据。该请求将调用您的视图,在 jQuery.ajax 调用中您指定请求返回 JSON,这会自动使数据作为对象提供给 Javascript。在 jQuery.ajax 成功处理程序中,您可以将数据传递给您的绘图函数。

于 2011-11-28T14:37:25.587 回答