请见谅,我对Django、Python和Web开发都非常新手。我的目标是展示使用matplotlib生成的图表。我曾经让首页自动重定向到图表的png文件(在浏览器中显示图表)。但现在我想要看到实际的首页,仅嵌入图表。换句话说,我想看到导航栏等元素以及网页主体中的图表。
目前,我已经进行了一些搜索,并大致知道如何实现这一目标。我的想法是创建一个专门返回图表的视图,然后从模板中使用img src标签访问此png图像以显示数据。
图表代码:
from django.shortcuts import render
import urllib
import json
from django.http import HttpResponse
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import datetime as dt
import pdb
def index(request):
stock_price_url = 'https://www.quandl.com/api/v3/datatables/WIKI/PRICES.json?ticker=GOOGL&date.gte=20151101&qopts.columns=date,close&api_key=KEY'
date = []
price = []
#pdb.set_trace()
source_code = urllib.request.urlopen(stock_price_url).read().decode()
json_root = json.loads(source_code)
json_datatable = json_root["datatable"]
json_data = json_datatable["data"]
for day in json_data:
date.append(dt.datetime.strptime(day[0], '%Y-%m-%d'))
price.append(day[1])
fig=Figure()
ax = fig.add_subplot(1,1,1)
ax.plot(date, price, '-')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.set_title("Google Stock")
canvas = FigureCanvas(fig)
response = HttpResponse(content_type='image/png')
#canvas.print_png(response)
return response
模板代码:
{% extends "home/header.html" %}
{% block content %}
<p>Search a stock to begin!</p>
<img src="home/graph.py" />
{% endblock %}
我现在得到的是: