按照教程(https://github.com/agiliq/django-graphos)和此stackoverflow帖子(Displaying graphs using Django-graphos),我无法获取任何数据发布到我的模板。
models.py
class MonthlyWeatherByCity(models.Model):
month = models.IntegerField()
boston_temp = models.DecimalField(max_digits=5, decimal_places=1)
houston_temp = models.DecimalField(max_digits=5, decimal_places=1)
class Meta:
verbose_name_plural = "Monthly Weather By Cities"
def __unicode__(self):
return unicode(self.month)
views.py
from graphos.sources.model import ModelDataSource
from graphos.renderers import flot
from portal.models import MonthlyWeatherByCity
def graph_test(request):
queryset = MonthlyWeatherByCity.objects.all()
data_source = ModelDataSource(queryset, fields=['boston_temp', 'houston_temp'])
chart = flot.LineChart(data_source, options={'title': "Website", 'xaxis': {'mode': "categories"}})
return render_to_response('portal/index.html', {'chart': chart})
index.html - 图表中没有显示任何内容。
{% extends 'portal/base.html' %}
{% load static %}
{% block head %}
<!-- Needed for graphos -->
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.categories.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js" type="text/javascript"></script>
{% endblock %}
{% block body_block %}
<div class="hero-unit">
<h1>Attack Control Center</h1>
{% if user.is_authenticated %}
<h3>Welcome back {{ user.username }}!</h3>
{% endif %}
</div>
<div class="row-fluid">
<div class="span6">
<h2>Charts</h2>
{{ chart.as_html }}
</div>
</div>
{% endblock %}
./ manage.py shell
当我将所有内容复制到shell中时 - 定义request =&#34; test&#34; - 并运行print graph_test(request)
<div id="ZGScakAPkH" style="width:800px;height:400px;"></div>
<script type="text/javascript">
$(function () {
$.plot(
$("#ZGScakAPkH"),
,
{"series": {"lines": {"show": "true"}}, "legend": {"position": "ne"}, "xaxis": {"mode": "categories"}, "title": "Website"}
);
});
</script>
</div>
为{{chart.as_html}}制定了相应的内容。我不确定为什么没有将其导入我的模板。
答案 0 :(得分:0)
您没有显示render_to_response
的来源。我怀疑功能可能是引起问题的部分原因。
请注意普通render_to_response
function is deprecated,支持明确处理request
对象的render
function。
import django.shortcuts
from graphos.sources.model import ModelDataSource
import graphos.renderers
from portal.models import MonthlyWeatherByCity
def graph_test(request):
queryset = MonthlyWeatherByCity.objects.all()
data_source = ModelDataSource(queryset, fields=[
'boston_temp', 'houston_temp'])
chart = graphos.renderers.flot.LineChart(data_source, options={…})
return django.shortcuts.render(
request,
template_name='portal/index.html',
context={'chart': chart})
另请注意,class-based views建议更灵活。